ClaudeHowSupport Us

does not support tool types: computer_20251124

The error

A computer-use request that declares the computer_20251124 tool returns a 400 on Opus 5.5 and Sonnet 5.5 when sent through the Claude API or Google Cloud. The message names the rejected type and then lists the ones the model will take:

'claude-opus-5-5' does not support tool types: computer_20251124. Did you mean one of ...

On Amazon Bedrock both models still accept computer_20251124, with its beta header, so the same code can pass on one platform and fail on another. The older computer_20250124 version is rejected by Sonnet 5.5 everywhere.

The replacement is a toolset, not a renamed tool

On the Claude API and Google Cloud these models take computer use only as the computer_toolset_20260801 toolset. It is generally available, so the beta header and the beta client namespace go. The entry is just {"type": "computer_toolset_20260801"} — no name, and no display width or height — with an optional configs map to switch individual member tools off. It can't share a request with a computer_20251124 entry or another tool named computer.

The agent loop changes too

This is the part a find-and-replace misses. Calls arrive as tool_use blocks whose name is the member tool — screenshot, left_click, type, zoom — so the action is the block's name, not a field inside its input. A turn can contain several of them. Return one tool_result per call, all in the next user message, and echo "toolset_name": "computer" on every result; a result without it is rejected. Only screenshot and zoom results need an image, coordinates stay in the pixel space of your full screenshots, and screenshots must already fit the model's image limits, because the toolset takes no display size and nothing downscales for you.

A safe order to make the change

Opus 5 accepts both forms, so move the loop to the toolset on Opus 5 first, confirm it works, then switch the model id. Where you stream with fine-grained tool streaming, replace the old beta header with the per-tool eager_input_streaming field — on Sonnet 5.5 the header is documented as a 400 alongside a computer toolset, and the field is the current mechanism everywhere. And don't prune old screenshots from the history to save tokens: removing an earlier turn invalidates later thinking blocks on these models. Use server-side tool-result clearing instead.

See migrating: Opus 5 to Opus 5.5 and thinking block bound to a different conversation.

Verified 2026-09-30 against ClaudeHow facts module (src/data/facts/) — see /about/#accuracy.