[BUG] Opus 4.7 tool calls fail with "The model's tool call could not be parsed (retry also failed)" since 2026-05-20
Preflight Checklist
- [x] I have searched existing issues and this is not a duplicate
- [x] I am filing a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
Claude Opus 4.7 assistant turns end with stop_reason: tool_use, but the response body contains no tool_use block — only thinking and text blocks. Claude Code injects Your tool call was malformed and could not be parsed. Please retry.; the retried response again contains no tool_use block, and the turn ends with:
The model's tool call could not be parsed (retry also failed).
The thinking-block signatures decode to a protobuf model-name field. Two distinct values appear: claude-opus-4-7 (a 15-byte length-prefixed string) and claude-quoll-v7-hr-fast-ab-high-p (a 33-byte length-prefixed string). This value changed by date. The table below is a full (not sampled) decode of every Opus 4.7 assistant response that has a thinking-block signature; 0 entries failed to decode:
| Date | claude-opus-4-7 | claude-quoll-v7-hr-fast-ab-high-p | retry also failed events | Please retry events |
|---|---|---|---|---|
| 05-19 | 174 (100%) | 0 | 0 | 0 |
| 05-20 | 8 | 45 | 0 | 4 |
| 05-21 | 0 | 491 (100%) | 29 | 70 |
Every malformed (no tool_use block) response decodes to claude-quoll-v7-hr-fast-ab-high-p.
The usage_speed field is standard for every Opus 4.7 response in this period, including all malformed ones. Across the entire local transcript DB (73,830 messages), the count of responses with usage_speed=fast is 0. /fast is unavailable on this account (no usage credits).
What Should Happen?
A response with stop_reason: tool_use must contain a tool_use block. Opus 4.7 tool calls produced no retry also failed events while the signature model-name value was claude-opus-4-7 (through 05-19).
Error Messages/Logs
# Injected by Claude Code after the response with no tool_use block:
Your tool call was malformed and could not be parsed. Please retry.
# Shown after the retried response again has no tool_use block:
The model's tool call could not be parsed (retry also failed).
Malformed assistant message shape (from decoded transcripts):
stop_reason=tool_use- content blocks =
thinking+textonly (notool_useblock) - thinking-block signature model-name field =
claude-quoll-v7-hr-fast-ab-high-p usage_speed=standard
Steps to Reproduce
- Use model = Claude Opus 4.7 (signature model-name field
claude-quoll-v7-hr-fast-ab-high-pas of 2026-05-21). - Run tasks that require multiple tool calls with extended thinking (file edits, bash, searches).
- The assistant intermittently returns
stop_reason: tool_usewith notool_useblock, which ends the turn withThe model's tool call could not be parsed (retry also failed).
On 2026-05-21 this produced 70 Please retry events and 29 retry also failed events. All 29 retry also failed events originate from Opus 4.7 responses; 0 originate from Sonnet 4.6 responses in the same period.
Claude Model
Opus (Claude Opus 4.7; signature model-name field claude-quoll-v7-hr-fast-ab-high-p)
Is this a regression?
Yes — it worked before.
Last Working Version
retry also failed events: 0 through 05-19, 0 on 05-20, 29 on 05-21. While the signature model-name value was claude-opus-4-7 (through 05-19) there were 0 such events. Claude Code was upgraded from 2.1.145 to 2.1.146 on 2026-05-21.
Claude Code Version
2.1.146
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
zsh
Additional Information
- Per-date signature model-name value (full decode),
usage_speed, and recorded failure events:
| Date | Opus 4.7 model-name value (decoded) | usage_speed | retry also failed | Please retry |
|---|---|---|---|---|
| 05-19 | claude-opus-4-7 (174/174) | standard | 0 | 0 |
| 05-20 | claude-opus-4-7 (8) + claude-quoll-v7-hr-fast-ab-high-p (45) | standard | 0 | 4 |
| 05-21 | claude-quoll-v7-hr-fast-ab-high-p (491/491) | standard | 29 | 70 |
- Decoding detail: the model name is a length-prefixed protobuf string field (
0x32, length0x0f=15 forclaude-opus-4-7;0x32, length0x21=33 forclaude-quoll-v7-hr-fast-ab-high-p). A trailing8seen in naivestringsoutput (e.g....-high-p8,claude-opus-4-78) is the next field's tag byte0x38, not part of the model name. - The 29
retry also failedevents on 05-21 by cwd: 18 across three same worktrees (14 + 3 + 1) and 11 in one more workspace; all are Opus 4.7 responses. usage_speedisstandardfor all responses;usage_speed=fastcount in the DB is 0;/fastis unavailable (no usage credits).- The internal meaning of the
claude-quoll-v7-hr-fast-ab-high-pvalue is not determinable from client-side data. - An exact malformed rate cannot be derived from the local transcript export:
tool_useblocks are not consistently persisted in the export (responses on 05-18/05-19, which had 0 failures, also show absenttool_useblocks in the export). Only Claude Code's recordedPlease retry/retry also failedevents are cited above.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗