_

006: Strange quirks with Sonnet 3.7

I've discovered two interesting quirks when working with Claude 3.7 Sonnet compared to earlier versions.

Quirk 1: JSON Array Parsing Issues

When working with my agentic coding CLI, Sonnet 3.7 consistently struggles with the get_related_files tool, which expects an array of file paths as input.

Despite the schema clearly specifying that input_files should be an array:

"input_files": {
  "description": "An array of input files...",
  "items": { "type": "string" },
  "type": "array"
}

Sonnet 3.7 consistently outputs a string instead of an array:

"input": {
  "input_files": "internal/agent/agent_instructions.txt"  // WRONG
}

While Sonnet 3.5 has no problem:

"input": {
  "input_files": [
    "internal/agent/agent_instructions.txt"  // CORRECT
  ]
}

Quirk 2: Excessive Proactiveness

Sonnet 3.7 is noticeably more pushy and proactive than Sonnet 3.5. It frequently:

The only effective way to control this behavior is to explicitly instruct it not to be proactive unless specifically told to do so by the user, similar to how Claude Code handles this balance.

Have you noticed any strange quirks with Sonnet 2.7?

Update May 10 2025: Another thing I have noticed is the predilection of Sonnet 3.7 to summarize it's actions or edits made to a codebase despite explicit instructions to NOT do so in the system prompt. While a minor nitpick, it is annoying that this so baked into the model that it actually disregards system instructions avoid doing this practice. For context, this is the instructions that I give to the model:

... omitted prompt ...
* **DO NOT** summarize your actions before yielding back to the user, the user can see all actions you took, and all of your thought, as such there is no need to summarize what you did
... omitted prompt ...