OpenCode error
OpenCode: Expected thinking or redacted_thinking, but found tool_use
messages.3.content.0.type: Expected `thinking` or `redacted_thinking`, but found `tool_use`. When `thinking` is enabled, a final `assistant` message must start with a thinking block (preceeding the lastmost set of `tool_use` and `tool_result` blocks). We recommend you include thinking blocks from previous turns. To avoid this requirement, disable `thinking`.Status: WorkaroundLast verified 2 documented fixes3 sources
What it means
With extended thinking enabled, Anthropic requires the previous assistant turn to start with its thinking block. The request OpenCode sent did not include that block.
Causes
- Reasoning metadata lost in transit through a proxy. A maintainer in #3077: "The error that you reported for this issue is caused by missing metadata, if for whatever reason your proxy isnt properly transforming the chunks into openai compatible format, then opencode wont have 100% of the data it needs when sending requests to your proxy, so then it fails once it hits anthropic".
How to fix it
- Fix 1.
If you route through a proxy such as LiteLLM, make sure it passes through all reasoning data. The maintainer pointed to the proxy as the likely cause (#3077).
- Fix 2.
Upgrade. v1.0.164 "Fixed user invoked subtasks that were causing tool_use or missing thinking signatures". v1.18.26: "Claude 5 sessions now tolerate stale thinking blocks instead of failing after prompt or tool changes."
Terminalopencode upgrade
More OpenCode errors
All 17 OpenCode errorsProviderModelNotFoundErrorStatus: By designProviderInitErrorStatus: WorkaroundAI_APICallErrorStatus: WorkaroundThis credential is only authorized for use with Claude Code and cannot be used for other API requests.Status: By designAI_APICallError: messages.13: `tool_use` ids were found without `tool_result` blocks immediately after: toolu_01CfJCsh21fK1pAXsXWYJYBA, toolu_01NoqnwsaxoK3AYM2FyrxmjN. Each `tool_use` block must have a corresponding `tool_result` block in the next message.Status: Fixed in releaseError: Unexpected error, check log file at [user-home]/.local/share/opencode/log/2025-08-26T215857.log for more detailsStatus: WorkaroundAI_RetryError: Failed after 4 attempts. Last error: Too Many RequestsStatus: Workaroundundefined: The provided model identifier is invalid.Status: Fixed in release
Related reading
- OpenCode Hacked: What the Console Breach Means for Your API KeysOpenCode disclosed a breach of its Console that may have exposed provider keys. Who is affected, what to rotate today, and why hosted key gateways are the real risk.
- OpenCode 2: How to Upgrade From v1 Without Breaking Your SetupOpenCode 2 upgrade from v1: what the migration guide says breaks (plugins, server API, TUI config), what carries over, and a safe checklist before you switch.
- Run Your Coding Agent as an API: OpenCode Server on RailwayOpenCode server on Railway: run opencode serve in a container as a password-protected HTTP API with a persistent volume, reachable from any machine or webhook.
- Give Every Agent PR a Live Preview: Railway Environments for AI Pull RequestsRailway preview environments for agent pull requests: an isolated copy of your whole stack for every PR, so you verify agent changes by running them.
- GPT-6 Astra Release Guide: Benchmarks, $10/$50 Pricing, and How to Run It in Codex and OpenCodeGPT-6 Astra release guide: OpenAI's max-capability model, its $10/$50 pricing and 1.05M context, what the benchmarks do and do not say, and commands to try it.
- Put an AI Reviewer on Every Pull Request: A Webhook Build with OpenCode and RailwayBuild an AI pull request reviewer on Railway: a webhook service runs OpenCode headless on every PR diff and posts findings as a review, never touching the code.
FAQ
What does "Expected thinking or redacted_thinking, but found tool_use" mean in OpenCode?
With extended thinking enabled, Anthropic requires the previous assistant turn to start with its thinking block. The request OpenCode sent did not include that block.
How do I fix "Expected thinking or redacted_thinking, but found tool_use"?
There are 2 documented fixes. Start with the first: If you route through a proxy such as LiteLLM, make sure it passes through all reasoning data. The maintainer pointed to the proxy as the likely cause (#3077).
Is this OpenCode error fixed?
Status: Workaround. No release removes the cause. The documented fixes work around it. Affected versions: Reported Oct 2025 through LiteLLM and Bedrock. Related fixes in v1.0.164 and v1.18.26.
Sources
Last verified against 3 sources: official docs, maintainer replies and release notes.
Newsletter
Fixes for the tools you use, weekly
One email per week. New coding agent releases, what broke, and how developers are working around it.