Repository navigation
Expected thinking or redacted_thinking, but found tool_use #3077
Description
Activity
github-actions commented
on Oct 10, 2025 on Oct 10, 2025 – with GitHub ActionsContributorMore actionsThis issue might be a duplicate of existing issues. Please check:
- [bug] v0.8.0 Introduced thinking block bug with Claude Sonnet 4: "AI_APICallError: messages.3.content.0.type: Expected
thinkingorredacted_thinking, but foundtext." #2599: [bug] v0.8.0 Introduced thinking block bug with Claude Sonnet 4 - Reports the exact same error message about "Expectedthinkingorredacted_thinking, but foundtext" when using thinking blocks with tool calls - LiteLLM error: Anthropic doesn't support tool calling without tools= param specified #2915: LiteLLM error: Anthropic doesn't support tool calling without tools= param specified - Similar LiteLLM configuration issues with Anthropic models and tool calling
- Bedrock Exception: name: Extra inputs are not permitted #2038: Bedrock Exception: name: Extra inputs are not permitted - Another LiteLLM/Bedrock configuration issue where extra parameters cause API errors
Feel free to ignore if none of these address your specific case.
- [bug] v0.8.0 Introduced thinking block bug with Claude Sonnet 4: "AI_APICallError: messages.3.content.0.type: Expected
I was able to get the payload of the last request sent that resulted in this error:
HTTP log implementation
On
devbranch on 28d617d I changed:diff --git a/packages/opencode/src/flag/flag.ts b/packages/opencode/src/flag/flag.ts index 0437c4c6..ec7c76e1 100644 --- a/packages/opencode/src/flag/flag.ts +++ b/packages/opencode/src/flag/flag.ts @@ -9,6 +9,7 @@ export namespace Flag { export const OPENCODE_DISABLE_LSP_DOWNLOAD = truthy("OPENCODE_DISABLE_LSP_DOWNLOAD") export const OPENCODE_ENABLE_EXPERIMENTAL_MODELS = truthy("OPENCODE_ENABLE_EXPERIMENTAL_MODELS") export const OPENCODE_DISABLE_AUTOCOMPACT = truthy("OPENCODE_DISABLE_AUTOCOMPACT") + export const OPENCODE_HTTP_LOG = truthy("OPENCODE_HTTP_LOG") // Experimental export const OPENCODE_EXPERIMENTAL_WATCHER = truthy("OPENCODE_EXPERIMENTAL_WATCHER") diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index e0fe4be2..f6cf158e 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -393,10 +393,36 @@ export namespace Provider { const modPath = provider.id === "google-vertex-anthropic" ? `${installedPath}/dist/anthropic/index.mjs` : installedPath const mod = await import(modPath) - if (options["timeout"] !== undefined) { - // Only override fetch if user explicitly sets timeout + const timeout = options["timeout"] + const httpLog = Flag.OPENCODE_HTTP_LOG + if (timeout !== undefined || httpLog) { + const originalFetch = options["fetch"] ?? fetch options["fetch"] = async (input: any, init?: any) => { - return await fetch(input, { ...init, timeout: options["timeout"] }) + const requestTime = Date.now() + if (httpLog) { + log.info("http request", { + providerID: provider.id, + url: typeof input === "string" ? input : input?.url, + method: init?.method ?? "POST", + headers: init?.headers, + body: init?.body, + }) + } + const response = await originalFetch(input, timeout !== undefined ? { ...init, timeout } : init) + if (httpLog) { + const duration = Date.now() - requestTime + const clonedResponse = response.clone() + const body = await clonedResponse.text().catch(() => "[failed to read body]") + log.info("http response", { + providerID: provider.id, + status: response.status, + statusText: response.statusText, + headers: Object.fromEntries(response.headers.entries()), + body, + duration, + }) + } + return response } } const fn = mod[Object.keys(mod).find((key) => key.startsWith("create"))!]
HTTP request body
{ "model": "claude-4-5-sonnet", "max_tokens": 32000, "temperature": 1, "thinking": { "type": "enabled", "budget_tokens": 16000 }, "messages": [ { "role": "system", "content": "...", "cache_control": { "type": "ephemeral" } }, { "role": "system", "content": "...", "cache_control": { "type": "ephemeral" } }, { "role": "user", "content": "Think of a shell commands to run and run it." }, { "role": "assistant", "content": "", "tool_calls": [ { "id": "tooluse_DjCcbaRbTQuSqZ_EYPjtDw", "type": "function", "function": { "name": "bash", "arguments": "{\"command\":\"git branch --show-current\",\"description\":\"Show current git branch\"}" }, "cache_control": { "type": "ephemeral" } } ] }, { "role": "tool", "tool_call_id": "tooluse_DjCcbaRbTQuSqZ_EYPjtDw", "content": "dev\n", "cache_control": { "type": "ephemeral" } } ], "tools": [ // ... ], "tool_choice": "auto", "stream": true, "stream_options": { "include_usage": true } }does litellm proxy all the reasoning data? There is metadata missing from the reasoning chunk that is probably related:
{ "id": "prt_9ce7d0f2a001hbMeUIiVLauU1R", "sessionID": "ses_631830520ffeKAg0mziDe3unHA", "messageID": "msg_9ce7cfae5001QdLuZKqdf2ko95", "type": "reasoning", "text": "The user is asking me to think of 5 different shell commands and run them. This is a straightforward task. I should pick some common, useful shell commands that won't cause any harm and will provide interesting information about the system.\n\nLet me think of 5 different commands:\n1. `pwd` - print working directory\n2. `date` - show current date and time\n3. `uname -a` - show system information\n4. `whoami` - show current user\n5. `echo $SHELL` - show the current shell\n\nThese are all safe, read-only commands that will give useful information. I should run them all in parallel since they're independent.\n\nAccording to the instructions, I should be concise and direct. I don't need to explain much unless it's a non-trivial command. These are all trivial commands, so I should just run them.", "time": { "start": 1760105926442, "end": 1760105929703 } },Example of what I'd expect tto see there:
{ ..... "metadata": { "anthropic": { "signature": "EpoFCkYICBgCKkCbTfCLXzhDRXz6OqIdv7M/TW5uqwOam/XJcmdXqpUSmQ7Excsa2jhPPKV3vOMtPn4WYeH5MOplnsO3ltSuFdEcEgxZ+toRK8yaQEzcUX8aDH6cE85hDM7VHR12riIwRAG91rGHahBxIsZDUqUy6iDiZAa88iY7zu62L4mwIiDCrSzK661IRhfyFuhIXzbEKoEEinnwzJMwUuF/DesP99dLdNbmxlrlEivqS0glCmIuIqIjV5PqGymNJmMfE20EPnoZ0u6hRzR7ecIv8bVMIycJ8X5aLaRNyimEyI6SMmbCV4qIbNAfm74wV2cUvLMZ3HR6Deb3O3PcN/4A9HVF4iPDxKSUwXMtn/JWvLQSF4SzHjrL8Rr1wFmUDGLb++uL7fAeG8Q/bO05pWiSxzl4n/FKKt5oEiGTeKZhjd7MpKviCHJfMN05nCkPatUff2uUoLqUpHShSuGoJZDYjOOIpUL5FQHktZR16Pa6EoKGVDUH7iKBHx4XV+BDAHxUJUkVd8JIbCeGzyer9kiWr0F5iBqMMNV0XG6yt1RzSeP6mko0r3CFFdvTRl9BA02AXVMDQhintL7pujWZwh2INyZToz/BfFSM/HR/U1JtrEkZI+etUCcV8UanVFtwpjLSBSf9CGlXmeadG+7noa8VKVLJCxkMyvWzH40HjXwULXgknGgxIvTg48pKoiXp3dQ7adwbk0fCUm8/j/RmOMCDMNHNiB3yOGShWHo8W/OcwNc8GH9aCPbecC+wk4H5XqqahSqpClRtxp7IMKbVo54+gn5QbvjWXcYo9B/1x7Efw78Z6tmzyKN/tyGezQCoWIHjPAY/0jphJ2HNYE3rm5Goyc/4uu3Vg+StjPe4LSX+RK3KSnmXvPbtGAE=" } }, .....full log with HTTP requests & responses
INFO 2025-10-10T14:51:21 +3ms service=provider providerID=my-lite-llm-provider url=https://my-litellm-host.com/chat/completions method=POST body={"model":"gemini-2.5-flash","max_tokens":1500,"messages":[{"role":"system","content":"..."},{"role":"user","content":"Think of 5 different shell commands to run and run them."}]} http request INFO 2025-10-10T14:51:21 +0ms service=provider providerID=my-lite-llm-provider url=https://my-litellm-host.com/chat/completions method=POST body={"model":"claude-4-5-sonnet","max_tokens":32000,"temperature":1,"thinking":{"type":"enabled","budget_tokens":16000},"messages":[{"role":"system","content":"...","cache_control":{"type":"ephemeral"}},{"role":"system","content":"...","cache_control":{"type":"ephemeral"}},{"role":"user","content":"Think of 5 different shell commands to run and run them.","cache_control":{"type":"ephemeral"}}],"tools":[...],"tool_choice":"auto","stream":true,"stream_options":{"include_usage":true}} http request INFO 2025-10-10T14:51:22 +38ms service=provider providerID=my-lite-llm-provider status=200 statusText=OK headers={"connection":"keep-alive","content-length":"584","content-type":"application/json","date":"Fri, 10 Oct 2025 14:51:22 GMT","server":"uvicorn","x-litellm-attempted-fallbacks":"0","x-litellm-attempted-retries":"0","x-litellm-call-id":"6dc5948f-ebf3-4e90-9c8f-7e83c921374b","x-litellm-key-spend":"32.07764145000002","x-litellm-model-group":"gemini-2.5-flash","x-litellm-model-id":"bee511aa55363cd0f2f94431fea34fab0d936909c167dd0a707c348797734d4d","x-litellm-response-cost":"0.00038869999999999996","x-litellm-version":"1.77.5"} body={"id":"ah3paJbAAa7-kbwP2dbhkAY","created":1760107881,"model":"gemini-2.5-flash","object":"chat.completion","choices":[{"finish_reason":"stop","index":0,"message":{"content":"Running 5 different shell commands","role":"assistant","images":[],"thinking_blocks":[]}}],"usage":{"completion_tokens":131,"prompt_tokens":204,"total_tokens":335,"completion_tokens_details":{"reasoning_tokens":125,"text_tokens":6},"prompt_tokens_details":{"text_tokens":204}},"vertex_ai_grounding_metadata":[],"vertex_ai_url_context_metadata":[],"vertex_ai_safety_results":[],"vertex_ai_citation_metadata":[]} duration=1038 http response INFO 2025-10-10T14:51:28 +23ms service=provider providerID=my-lite-llm-provider status=200 statusText=OK headers={"connection":"keep-alive","content-type":"text/event-stream; charset=utf-8","date":"Fri, 10 Oct 2025 14:51:24 GMT","server":"uvicorn","transfer-encoding":"chunked","x-litellm-call-id":"25058b06-6a16-4647-9ed1-e9799923ae5e","x-litellm-key-spend":"32.07764145000002","x-litellm-model-api-base":"https://bedrock-runtime.eu-central-1.amazonaws.com/model/eu.anthropic.claude-sonnet-4-5-20250929-v1%3A0/converse-stream","x-litellm-model-id":"b13a5f4ec04005c9b991a3723cfa44a8e388fda30c782189d08741a1dbb3472d","x-litellm-version":"1.77.5"} body=data: {"id":"chatcmpl-23e24dd9-100c-4133-b90c-3a783141e274","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":"The user wants me","thinking_blocks":[{"type":"thinking","thinking":"The user wants me"}],"provider_specific_fields":{"reasoningContent":{"text":"The user wants me"}},"content":"","role":"assistant"}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-dff732ad-3440-40d6-bcf1-e7015398cedd","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" to think of 5 different shell","thinking_blocks":[{"type":"thinking","thinking":" to think of 5 different shell"}],"provider_specific_fields":{"reasoningContent":{"text":" to think of 5 different shell"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-e6cd65f5-e4ae-4920-b6cd-f41a42e8a141","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" commands to","thinking_blocks":[{"type":"thinking","thinking":" commands to"}],"provider_specific_fields":{"reasoningContent":{"text":" commands to"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-3621fcc5-3cd4-4e6a-bb76-fd179f2682e6","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" run an","thinking_blocks":[{"type":"thinking","thinking":" run an"}],"provider_specific_fields":{"reasoningContent":{"text":" run an"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-39f0e62e-19f5-4125-9bad-613a696dfd00","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":"d execute","thinking_blocks":[{"type":"thinking","thinking":"d execute"}],"provider_specific_fields":{"reasoningContent":{"text":"d execute"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-5fa2e734-ed30-476c-9602-b8c6ca7bc6b2","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" them. I should pick","thinking_blocks":[{"type":"thinking","thinking":" them. I should pick"}],"provider_specific_fields":{"reasoningContent":{"text":" them. I should pick"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-8c0e9c3d-f61e-4075-b3aa-5e74cd6e5209","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" reasonable","thinking_blocks":[{"type":"thinking","thinking":" reasonable"}],"provider_specific_fields":{"reasoningContent":{"text":" reasonable"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-9d6adc8a-844a-486d-8d9b-270e59748429","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" commands","thinking_blocks":[{"type":"thinking","thinking":" commands"}],"provider_specific_fields":{"reasoningContent":{"text":" commands"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-7c938080-760c-43d1-ad41-a0ec7c6cd5f0","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" that would be inform","thinking_blocks":[{"type":"thinking","thinking":" that would be inform"}],"provider_specific_fields":{"reasoningContent":{"text":" that would be inform"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-946982fa-1412-4b50-ae77-c6bc68174cb8","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":"ative or","thinking_blocks":[{"type":"thinking","thinking":"ative or"}],"provider_specific_fields":{"reasoningContent":{"text":"ative or"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-9020bb6f-e6ef-404b-abfa-8ed2890c935b","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" useful in","thinking_blocks":[{"type":"thinking","thinking":" useful in"}],"provider_specific_fields":{"reasoningContent":{"text":" useful in"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-b877bf16-fc5c-45ae-a38f-df118f621f52","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" this context. Since","thinking_blocks":[{"type":"thinking","thinking":" this context. Since"}],"provider_specific_fields":{"reasoningContent":{"text":" this context. Since"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-43301132-b848-46a0-836d-42987bcd9a1e","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" I","thinking_blocks":[{"type":"thinking","thinking":" I"}],"provider_specific_fields":{"reasoningContent":{"text":" I"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-e069675a-d0fa-4bd2-82ae-a80ce4f1860c","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":"'m","thinking_blocks":[{"type":"thinking","thinking":"'m"}],"provider_specific_fields":{"reasoningContent":{"text":"'m"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-da18dddf-31b6-49fb-b06b-4522dc2070cc","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" in a git","thinking_blocks":[{"type":"thinking","thinking":" in a git"}],"provider_specific_fields":{"reasoningContent":{"text":" in a git"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-48a9aba5-702e-4caf-b7e8-737e6ae87486","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" repository, I can","thinking_blocks":[{"type":"thinking","thinking":" repository, I can"}],"provider_specific_fields":{"reasoningContent":{"text":" repository, I can"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-5d886ed1-a484-414b-9335-1d55d1ea61d3","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" run","thinking_blocks":[{"type":"thinking","thinking":" run"}],"provider_specific_fields":{"reasoningContent":{"text":" run"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-b62eaf53-f164-49c4-9b51-48a7a6210f43","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" various","thinking_blocks":[{"type":"thinking","thinking":" various"}],"provider_specific_fields":{"reasoningContent":{"text":" various"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-3ec22c18-7113-4fd5-a48f-58eb3f3093ca","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" commands.","thinking_blocks":[{"type":"thinking","thinking":" commands."}],"provider_specific_fields":{"reasoningContent":{"text":" commands."}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-21509bd4-7b80-4ba1-a5d9-a1585dd9af83","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" Let me think of 5 different","thinking_blocks":[{"type":"thinking","thinking":" Let me think of 5 different"}],"provider_specific_fields":{"reasoningContent":{"text":" Let me think of 5 different"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-933182fe-83da-4cfb-8e84-bb438a451228","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" commands:\n\n1. `pw","thinking_blocks":[{"type":"thinking","thinking":" commands:\n\n1. `pw"}],"provider_specific_fields":{"reasoningContent":{"text":" commands:\n\n1. `pw"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-37ead03c-1ed0-48f3-9659-bfdffcdfa2f5","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":"d` - Print working directory\n2.","thinking_blocks":[{"type":"thinking","thinking":"d` - Print working directory\n2."}],"provider_specific_fields":{"reasoningContent":{"text":"d` - Print working directory\n2."}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-c75f772b-6cb7-4a66-87e4-da7262db4842","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" `git","thinking_blocks":[{"type":"thinking","thinking":" `git"}],"provider_specific_fields":{"reasoningContent":{"text":" `git"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-d70d2fd3-c54e-4c3a-af0b-ecbf6e578741","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" branch","thinking_blocks":[{"type":"thinking","thinking":" branch"}],"provider_specific_fields":{"reasoningContent":{"text":" branch"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-5884639d-e8b2-46d3-a67b-ebf6f75268ce","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":"` - Show","thinking_blocks":[{"type":"thinking","thinking":"` - Show"}],"provider_specific_fields":{"reasoningContent":{"text":"` - Show"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-d6ffd1af-9f75-43fd-9ad7-61f12e122a46","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" git","thinking_blocks":[{"type":"thinking","thinking":" git"}],"provider_specific_fields":{"reasoningContent":{"text":" git"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-500f4f1f-df2b-434e-8f4e-a1d85ab2109d","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" branches\n3. `u","thinking_blocks":[{"type":"thinking","thinking":" branches\n3. `u"}],"provider_specific_fields":{"reasoningContent":{"text":" branches\n3. `u"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-c18d2eec-423d-41d9-9cf6-478d4d459be5","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":"name -a` - Show system information","thinking_blocks":[{"type":"thinking","thinking":"name -a` - Show system information"}],"provider_specific_fields":{"reasoningContent":{"text":"name -a` - Show system information"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-d9f7784e-791c-43f9-b007-808384fcc1b8","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":"\n4. `node","thinking_blocks":[{"type":"thinking","thinking":"\n4. `node"}],"provider_specific_fields":{"reasoningContent":{"text":"\n4. `node"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-e0377e52-7a79-42c1-a38d-371da31a2031","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" --version` - Show node","thinking_blocks":[{"type":"thinking","thinking":" --version` - Show node"}],"provider_specific_fields":{"reasoningContent":{"text":" --version` - Show node"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-a7e7613e-46a8-46cf-9ab0-672066f18acd","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" version\n5. `b","thinking_blocks":[{"type":"thinking","thinking":" version\n5. `b"}],"provider_specific_fields":{"reasoningContent":{"text":" version\n5. `b"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-64a825a2-9e15-46c8-9bfa-4507ea9e8d4b","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":"un --version` - Show bun","thinking_blocks":[{"type":"thinking","thinking":"un --version` - Show bun"}],"provider_specific_fields":{"reasoningContent":{"text":"un --version` - Show bun"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-05316e80-029d-48ba-8397-1f670ec7ce05","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" version (","thinking_blocks":[{"type":"thinking","thinking":" version ("}],"provider_specific_fields":{"reasoningContent":{"text":" version ("}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-72ba6264-306d-4e01-bf1e-e4fa026a3fb8","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":"since this","thinking_blocks":[{"type":"thinking","thinking":"since this"}],"provider_specific_fields":{"reasoningContent":{"text":"since this"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-9faec5f9-f3f6-4160-81d3-ad70c2f8a22a","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" project","thinking_blocks":[{"type":"thinking","thinking":" project"}],"provider_specific_fields":{"reasoningContent":{"text":" project"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-ae8ef1dc-b3ca-4ceb-a01d-d10794d304bc","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" uses bun)\n\nI shoul","thinking_blocks":[{"type":"thinking","thinking":" uses bun)\n\nI shoul"}],"provider_specific_fields":{"reasoningContent":{"text":" uses bun)\n\nI shoul"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-04c147a4-c0df-4367-8835-401d304f61ec","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":"d run these in","thinking_blocks":[{"type":"thinking","thinking":"d run these in"}],"provider_specific_fields":{"reasoningContent":{"text":"d run these in"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-0a622a83-b3b8-4310-8fde-fba7a111fac1","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" parallel since","thinking_blocks":[{"type":"thinking","thinking":" parallel since"}],"provider_specific_fields":{"reasoningContent":{"text":" parallel since"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-63dd1dff-b67d-4855-a533-85b944ba4178","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" they're all","thinking_blocks":[{"type":"thinking","thinking":" they're all"}],"provider_specific_fields":{"reasoningContent":{"text":" they're all"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-e84070f1-8f14-4e2c-8eaa-bc975fbabc4b","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" independent of","thinking_blocks":[{"type":"thinking","thinking":" independent of"}],"provider_specific_fields":{"reasoningContent":{"text":" independent of"}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-9ed7805b-a3bf-4a49-b0ca-2afab7e20edb","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":" each other.","thinking_blocks":[{"type":"thinking","thinking":" each other."}],"provider_specific_fields":{"reasoningContent":{"text":" each other."}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-92a96b72-6a53-45ca-bb3a-5e29ebc29ba6","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":"","thinking_blocks":[{"type":"thinking","signature":"Et4FCkgICBABGAIqQFm+AC4NJF4/9kEyplZ9WB9i1vplCHJCTSVmWfOvoNZ/5ifWsh40lyc/NiFcEpt2wrHpaxCEencZdL9BWp5YbeMSDDNc6kP8/Ro71T9G6hoMltAMuQwesnxDk9x7IjBvqhVIo5bIBO7YvAbsDyABrDXCECEYJluW3cRpYj90VG0IirCBxfozHdmQVI6j87QqwwTyQ8ILIWStyDhCJXBmPQsI1lOhs0aFKEs4D+FeDkZPwo6lehfkZ9XDfdvlGpD7zoiSPp8OpmiZUqQoeGIgC+RPcq04JUind5raJOWMzxf4nM681Nqqe99tMQRrAP67h+7YEWrH0O/YTZ1VRJ4dGVJ3q82ABmFLJu/7DgmEATyhWxQ7IdmMik+YYTHiSMdURkSm6Jvp20QsYPMB84BEM3UHIJcGyQQmQZ0ibRvtho1oPQrZxpcnpPuO0LRl/1GTRR7xgP3n2zm2f5l4bL1dLxl3BQLBH9NNG8RoA3LjcZ4T1v4IGbOsuGJZD+AZVr1vT0ZnkShcF8S+vHfuP8Y25AaFFxIAhZn9vC/FfrDVreQSEiFgLqOEZe1EP77b12zC0mQAoLPfdQLjPihASwNLcmV++wEOEq6ziJcfFw0137BxGo6d/Y9cj0nvmIqCAkCHo5J85gGMJBjIbBwHdEhKth5iT6tRITIDyCGBuTg1rdYldMz7ofefZaYCq2QTt2JHFaTsdxc4tobZExVCSfgrOUFpfCgE/egnJEAVk9gXYqKDk+Fua2aBwjpVD2NhcKkBDAUSYrYYNWrsbLDGoCnBgorze8nDKfRI67vNxRnQQr1ONiPlcti8rS7d0Q/fxBJjDlwNN3IFiRtdE2quRzr4nfVSuoXw8UTawMwsTzaLRG0SkuF66ximFkl0DyYt1USxJBCUHt9gO2tq1WBo0BYFkTAygUN6GTMB0G2rvbLSig08f8PwH06eZ5hCOkmZtVuenmZ7PRcYAQ==","thinking":""}],"provider_specific_fields":{"reasoningContent":{"signature":"Et4FCkgICBABGAIqQFm+AC4NJF4/9kEyplZ9WB9i1vplCHJCTSVmWfOvoNZ/5ifWsh40lyc/NiFcEpt2wrHpaxCEencZdL9BWp5YbeMSDDNc6kP8/Ro71T9G6hoMltAMuQwesnxDk9x7IjBvqhVIo5bIBO7YvAbsDyABrDXCECEYJluW3cRpYj90VG0IirCBxfozHdmQVI6j87QqwwTyQ8ILIWStyDhCJXBmPQsI1lOhs0aFKEs4D+FeDkZPwo6lehfkZ9XDfdvlGpD7zoiSPp8OpmiZUqQoeGIgC+RPcq04JUind5raJOWMzxf4nM681Nqqe99tMQRrAP67h+7YEWrH0O/YTZ1VRJ4dGVJ3q82ABmFLJu/7DgmEATyhWxQ7IdmMik+YYTHiSMdURkSm6Jvp20QsYPMB84BEM3UHIJcGyQQmQZ0ibRvtho1oPQrZxpcnpPuO0LRl/1GTRR7xgP3n2zm2f5l4bL1dLxl3BQLBH9NNG8RoA3LjcZ4T1v4IGbOsuGJZD+AZVr1vT0ZnkShcF8S+vHfuP8Y25AaFFxIAhZn9vC/FfrDVreQSEiFgLqOEZe1EP77b12zC0mQAoLPfdQLjPihASwNLcmV++wEOEq6ziJcfFw0137BxGo6d/Y9cj0nvmIqCAkCHo5J85gGMJBjIbBwHdEhKth5iT6tRITIDyCGBuTg1rdYldMz7ofefZaYCq2QTt2JHFaTsdxc4tobZExVCSfgrOUFpfCgE/egnJEAVk9gXYqKDk+Fua2aBwjpVD2NhcKkBDAUSYrYYNWrsbLDGoCnBgorze8nDKfRI67vNxRnQQr1ONiPlcti8rS7d0Q/fxBJjDlwNN3IFiRtdE2quRzr4nfVSuoXw8UTawMwsTzaLRG0SkuF66ximFkl0DyYt1USxJBCUHt9gO2tq1WBo0BYFkTAygUN6GTMB0G2rvbLSig08f8PwH06eZ5hCOkmZtVuenmZ7PRcYAQ=="}},"content":""}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-4a7652c3-496e-4bbd-81a7-dcb9539de0b5","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"id":"tooluse_xY3KNO5BQ_Wb2hdMsEgD8g","function":{"arguments":"","name":"bash"},"type":"function","index":0}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-3af16f4d-79da-451c-8332-501ff914703d","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":""},"type":"function","index":0}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-40478524-46b7-4015-9649-9000c6baa8d5","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"{\"comma"},"type":"function","index":0}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-d0208348-ba3f-4990-a874-253a86648d5e","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"nd\":"},"type":"function","index":0}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-2c98dea9-c7e2-42e1-867e-75ce7016759e","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":" \"pw"},"type":"function","index":0}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-1c19a51d-c059-4f2d-9376-89decf28a50f","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"d\""},"type":"function","index":0}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-9381aa52-3ebe-48af-a2d0-8e5c2a442edf","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":", \"descri"},"type":"function","index":0}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-a0e8598e-be0b-4716-a521-e71aae4a34e1","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"ption\": \"Pri"},"type":"function","index":0}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-a876628b-3555-44d2-9bf2-4d6730f895e8","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"nt w"},"type":"function","index":0}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-87d4d3ce-379f-4607-997e-207a4420691b","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"ork"},"type":"function","index":0}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-6bdd06c5-f711-4ca0-ab8d-9916d1b674ce","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"ing di"},"type":"function","index":0}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-c0a602c2-75f5-48f8-8e8a-7e59aa802d94","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"rectory\"}"},"type":"function","index":0}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-a80446aa-cb3f-4b1d-9943-a3e00bd21fc7","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"id":"tooluse_QALMoQXsQYePdVd8rIaRTA","function":{"arguments":"","name":"bash"},"type":"function","index":1}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-71efd005-78d7-4bc6-84c9-3c5c42598906","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":""},"type":"function","index":1}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-294c6ce2-63fe-4c23-b608-b8290fae4a5e","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"{\"co"},"type":"function","index":1}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-af6d1967-fc7a-41ee-8f8a-ebf9c10c9089","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"mma"},"type":"function","index":1}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-8a04b1f5-9f65-41fa-8616-17d0a87aa416","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"nd"},"type":"function","index":1}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-d7e5f430-1aed-44a0-b96c-9b1b6cc6eb7b","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"\": \"git b"},"type":"function","index":1}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-9c7ce8cc-9145-4128-ab57-7e66624215fb","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"ranch\""},"type":"function","index":1}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-c120f009-dc59-4da0-b012-a000d73e7376","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":", \"d"},"type":"function","index":1}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-9b1418aa-9fd6-4730-b304-3b6ddc7fb815","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"escri"},"type":"function","index":1}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-3dfd7085-7777-46ea-a94f-bbd907c70924","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"ption\": \"Sh"},"type":"function","index":1}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-75e1b700-a490-4882-8185-efeb3c9aeb0e","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"ow git"},"type":"function","index":1}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-5a25a396-773d-4c01-90fd-119fcd71b906","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":" branch"},"type":"function","index":1}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-8ab6db62-e56f-47bc-b76d-8ff7ce75a2fe","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"es\"}"},"type":"function","index":1}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-e6f69dda-e440-4548-a6b2-f8e77ae7890c","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"id":"tooluse_V7hI0qzdTOC9xVQuvrNnDA","function":{"arguments":"","name":"bash"},"type":"function","index":2}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-6b727401-7fc0-4a6b-ab8b-4275ce70ce31","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":""},"type":"function","index":2}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-6253bc8c-8b15-43e9-806b-c5b0d5d48341","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"{\"command\":"},"type":"function","index":2}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-6d6f15ec-3c6f-44cf-871a-b8ac99edcc65","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":" \"u"},"type":"function","index":2}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-a5bd390d-0d94-4e02-abbd-9f3b1b7702ed","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"name -a\""},"type":"function","index":2}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-2c392ccd-b378-4a71-b6a3-181a697a7edd","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":", \"desc"},"type":"function","index":2}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-1e0b9716-002c-4f5f-9dfb-6199632ff3c3","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"ription\""},"type":"function","index":2}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-c2357ca5-892f-40a9-8708-19fbb14fc782","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":": \"Sh"},"type":"function","index":2}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-255a2ead-ce4d-471b-8587-ee723dd574d4","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"ow system"},"type":"function","index":2}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-4ebe0b90-de0f-4874-8601-8b66d480ac00","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":" infor"},"type":"function","index":2}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-7445fe26-8b08-49c0-a4fb-21f7a4c72be9","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"mati"},"type":"function","index":2}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-1ad86a2d-38db-4097-a624-86902502f360","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"on\"}"},"type":"function","index":2}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-f45d9944-756e-43c8-9833-d000e7749158","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"id":"tooluse_hq8Ap0CYRiOxbMx66NONbg","function":{"arguments":"","name":"bash"},"type":"function","index":3}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-02e0ead3-21f8-4f03-b5ba-373455d3ff39","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":""},"type":"function","index":3}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-42f2ff1d-3541-4b4e-a8e6-8b8e4ac728bf","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"{\"comman"},"type":"function","index":3}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-26310201-cecf-4135-b519-8efb37f74814","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"d\": \""},"type":"function","index":3}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-c7a8436b-9127-4bf9-b39a-d5eafba677f6","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"bun --"},"type":"function","index":3}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-2fc76d87-cfe8-4b51-85dc-65fb39fe127b","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"version"},"type":"function","index":3}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-4108c015-21ed-462a-96a8-76311ac484d9","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"\""},"type":"function","index":3}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-3e952e03-6419-452b-bca4-4f512903ec4e","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":", \"descript"},"type":"function","index":3}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-b45f66a3-7605-4a53-96bf-9afdd3cb29d5","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"ion\": \"Sho"},"type":"function","index":3}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-7b51c1e7-7733-471d-b127-6e7f41b3b386","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"w b"},"type":"function","index":3}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-a1a3790e-711f-464f-8cf6-27b07a641854","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"un"},"type":"function","index":3}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-f599fc5c-946f-4047-8bc4-3957571fafed","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":" vers"},"type":"function","index":3}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-45ce91e1-88e2-4e6d-9eba-7d2e8cce596f","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"ion\"}"},"type":"function","index":3}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-0dbae566-048f-4437-b70d-9386c8e73dc0","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"id":"tooluse_ciZPFEpRS8KVQork8dOxDA","function":{"arguments":"","name":"bash"},"type":"function","index":4}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-0f5b963b-16b5-4cd4-a154-ba9df0c775ec","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":""},"type":"function","index":4}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-aca1fd34-0e79-4737-a751-3fb4dc9acc4a","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"{\"command\": "},"type":"function","index":4}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-6486769f-e70f-4d59-8e06-0e5632a0d4a2","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"\"git log --"},"type":"function","index":4}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-fcaa18ff-f4a4-404f-a99b-57c871d1b641","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"oneline -"},"type":"function","index":4}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-f08fe0d2-bcec-4743-b5bc-4a9f05c5c1a8","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"5\""},"type":"function","index":4}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-32a0f358-056f-4979-9990-1f9f5d0e2e55","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":", \"descri"},"type":"function","index":4}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-a9d0d9ea-be63-41b8-8e31-493102615b67","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"ption\": \"S"},"type":"function","index":4}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-70e78e8f-2452-43b0-ba85-35f18b41575a","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"ho"},"type":"function","index":4}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-2c16c79d-ed30-422c-afbb-4e145eb5a493","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":"w last 5 git"},"type":"function","index":4}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-52851c20-be61-41f7-847c-82d517d76dc5","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"","tool_calls":[{"function":{"arguments":" commits\"}"},"type":"function","index":4}]}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-6187695b-33c8-4230-99dc-a4416b4946a6","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"finish_reason":"tool_calls","index":0,"delta":{}}],"provider_specific_fields":{}} data: {"id":"chatcmpl-94721afc-fc39-433a-bcdc-b8fa86f941f1","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{}}],"usage":{"completion_tokens":452,"prompt_tokens":9,"total_tokens":461,"completion_tokens_details":{"reasoning_tokens":135},"prompt_tokens_details":{"cached_tokens":0,"cache_creation_tokens":12922},"cache_creation_input_tokens":12922,"cache_read_input_tokens":0}} data: [DONE] duration=4658 http response ... INFO 2025-10-10T14:51:30 +1ms service=provider providerID=my-lite-llm-provider url=https://my-litellm-host.com/chat/completions method=POST body={"model":"claude-4-5-sonnet","max_tokens":32000,"temperature":1,"thinking":{"type":"enabled","budget_tokens":16000},"messages":[{"role":"system","content":"...","cache_control":{"type":"ephemeral"}},{"role":"system","content":"...","cache_control":{"type":"ephemeral"}},{"role":"user","content":"Think of 5 different shell commands to run and run them."},{"role":"assistant","content":"","tool_calls":[{"id":"tooluse_xY3KNO5BQ_Wb2hdMsEgD8g","type":"function","function":{"name":"bash","arguments":"{\"command\":\"pwd\",\"description\":\"Print working directory\"}"}},{"id":"tooluse_QALMoQXsQYePdVd8rIaRTA","type":"function","function":{"name":"bash","arguments":"{\"command\":\"git branch\",\"description\":\"Show git branches\"}"}},{"id":"tooluse_V7hI0qzdTOC9xVQuvrNnDA","type":"function","function":{"name":"bash","arguments":"{\"command\":\"uname -a\",\"description\":\"Show system information\"}"}},{"id":"tooluse_hq8Ap0CYRiOxbMx66NONbg","type":"function","function":{"name":"bash","arguments":"{\"command\":\"bun --version\",\"description\":\"Show bun version\"}"}},{"id":"tooluse_ciZPFEpRS8KVQork8dOxDA","type":"function","function":{"name":"bash","arguments":"{\"command\":\"git log --oneline -5\",\"description\":\"Show last 5 git commits\"}"},"cache_control":{"type":"ephemeral"}}]},{"role":"tool","tool_call_id":"tooluse_xY3KNO5BQ_Wb2hdMsEgD8g","content":"/Users/jessevanderpluijm/Code/forks/opencode\n"},{"role":"tool","tool_call_id":"tooluse_QALMoQXsQYePdVd8rIaRTA","content":" azure-openai-tool-schema\n better-claude-prompt-caching-detection\n* dev\n"},{"role":"tool","tool_call_id":"tooluse_V7hI0qzdTOC9xVQuvrNnDA","content":"Darwin mac.home 24.6.0 Darwin Kernel Version 24.6.0: Mon Jul 14 11:30:40 PDT 2025; root:xnu-11417.140.69~1/RELEASE_ARM64_T6041 arm64 arm Darwin\n"},{"role":"tool","tool_call_id":"tooluse_hq8Ap0CYRiOxbMx66NONbg","content":"1.2.20\n"},{"role":"tool","tool_call_id":"tooluse_ciZPFEpRS8KVQork8dOxDA","content":"b3ef1428 add http log\n28d617d8 ignore: update download stats 2025-10-10\n9b52d338 core: improve directory validation error messages to help users fix invalid directory names\n096710a8 ensure @opencode-ai/plugin is available in `.opencode` folder\n50bb2011 release: v0.14.7\n","cache_control":{"type":"ephemeral"}}],"tools":[...],"tool_choice":"auto","stream":true,"stream_options":{"include_usage":true}} http request INFO 2025-10-10T14:51:38 +10ms service=provider providerID=my-lite-llm-provider status=400 statusText=Bad Request body={"error":{"message":"litellm.BadRequestError: BedrockException - {\"message\":\"The model returned the following errors: messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking\"}. Received Model Group=claude-4-5-sonnet\nAvailable Model Group Fallbacks=['claude-4-5-sonnet-vertex']\nError doing the fallback: litellm.BadRequestError: Vertex_aiException BadRequestError - b'{\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking\"},\"request_id\":\"req_vrtx_011CTyhuTXynwxFQeCCieTz7\"}'No fallback model group found for original model_group=claude-4-5-sonnet-vertex. Fallbacks=[{'claude-4-5-sonnet': ['claude-4-5-sonnet-vertex']}, {'claude-4-sonnet': ['claude-4-sonnet-vertex']}, {'claude-3-7-sonnet': ['claude-3-7-sonnet-vertex']}, {'claude-3-5-sonnet': ['claude-3-5-sonnet-vertex']}, {'claude-3-haiku': ['claude-3-haiku-vertex']}, {'gpt-4.1-mini': ['gpt-4.1-nano']}]. Received Model Group=claude-4-5-sonnet-vertex\nAvailable Model Group Fallbacks=None\nError doing the fallback: litellm.BadRequestError: Vertex_aiException BadRequestError - b'{\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking\"},\"request_id\":\"req_vrtx_011CTyhuTXynwxFQeCCieTz7\"}'No fallback model group found for original model_group=claude-4-5-sonnet-vertex. Fallbacks=[{'claude-4-5-sonnet': ['claude-4-5-sonnet-vertex']}, {'claude-4-sonnet': ['claude-4-sonnet-vertex']}, {'claude-3-7-sonnet': ['claude-3-7-sonnet-vertex']}, {'claude-3-5-sonnet': ['claude-3-5-sonnet-vertex']}, {'claude-3-haiku': ['claude-3-haiku-vertex']}, {'gpt-4.1-mini': ['gpt-4.1-nano']}] LiteLLM Retried: 1 times, LiteLLM Max Retries: 2 LiteLLM Retried: 1 times, LiteLLM Max Retries: 2","type":null,"param":null,"code":"400"}} duration=7608 http response ERROR 2025-10-10T14:51:38 +4ms service=session.prompt session=ses_631651ae2ffej8iZ7gQz8TeDHV error={"error":{"name":"AI_APICallError","url":"https://my-litellm-host.com/chat/completions","requestBodyValues":{"model":"claude-4-5-sonnet","max_tokens":32000,"temperature":1,"thinking":{"type":"enabled","budget_tokens":16000},"messages":[{"role":"system","content":"...","cache_control":{"type":"ephemeral"}},{"role":"system","content":"...","cache_control":{"type":"ephemeral"}},{"role":"user","content":"Think of 5 different shell commands to run and run them."},{"role":"assistant","content":"","tool_calls":[{"id":"tooluse_xY3KNO5BQ_Wb2hdMsEgD8g","type":"function","function":{"name":"bash","arguments":"{\"command\":\"pwd\",\"description\":\"Print working directory\"}"}},{"id":"tooluse_QALMoQXsQYePdVd8rIaRTA","type":"function","function":{"name":"bash","arguments":"{\"command\":\"git branch\",\"description\":\"Show git branches\"}"}},{"id":"tooluse_V7hI0qzdTOC9xVQuvrNnDA","type":"function","function":{"name":"bash","arguments":"{\"command\":\"uname -a\",\"description\":\"Show system information\"}"}},{"id":"tooluse_hq8Ap0CYRiOxbMx66NONbg","type":"function","function":{"name":"bash","arguments":"{\"command\":\"bun --version\",\"description\":\"Show bun version\"}"}},{"id":"tooluse_ciZPFEpRS8KVQork8dOxDA","type":"function","function":{"name":"bash","arguments":"{\"command\":\"git log --oneline -5\",\"description\":\"Show last 5 git commits\"}"},"cache_control":{"type":"ephemeral"}}]},{"role":"tool","tool_call_id":"tooluse_xY3KNO5BQ_Wb2hdMsEgD8g","content":"/Users/jessevanderpluijm/Code/forks/opencode\n"},{"role":"tool","tool_call_id":"tooluse_QALMoQXsQYePdVd8rIaRTA","content":" azure-openai-tool-schema\n better-claude-prompt-caching-detection\n* dev\n"},{"role":"tool","tool_call_id":"tooluse_V7hI0qzdTOC9xVQuvrNnDA","content":"Darwin mac.home 24.6.0 Darwin Kernel Version 24.6.0: Mon Jul 14 11:30:40 PDT 2025; root:xnu-11417.140.69~1/RELEASE_ARM64_T6041 arm64 arm Darwin\n"},{"role":"tool","tool_call_id":"tooluse_hq8Ap0CYRiOxbMx66NONbg","content":"1.2.20\n"},{"role":"tool","tool_call_id":"tooluse_ciZPFEpRS8KVQork8dOxDA","content":"b3ef1428 add http log\n28d617d8 ignore: update download stats 2025-10-10\n9b52d338 core: improve directory validation error messages to help users fix invalid directory names\n096710a8 ensure @opencode-ai/plugin is available in `.opencode` folder\n50bb2011 release: v0.14.7\n","cache_control":{"type":"ephemeral"}}],"tools":[...],"tool_choice":"auto","stream":true,"stream_options":{"include_usage":true}},"statusCode":400,"responseHeaders":{"connection":"keep-alive","content-length":"3066","content-type":"application/json","date":"Fri, 10 Oct 2025 14:51:37 GMT","server":"uvicorn","x-litellm-call-id":"e27f8ee2-b8b7-47b6-a0fe-a82f1f88b271","x-litellm-key-spend":"32.04287525000002","x-litellm-response-cost":"0","x-litellm-timeout":"600"},"responseBody":"{\"error\":{\"message\":\"litellm.BadRequestError: BedrockException - {\\\"message\\\":\\\"The model returned the following errors: messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking\\\"}. Received Model Group=claude-4-5-sonnet\\nAvailable Model Group Fallbacks=['claude-4-5-sonnet-vertex']\\nError doing the fallback: litellm.BadRequestError: Vertex_aiException BadRequestError - b'{\\\"type\\\":\\\"error\\\",\\\"error\\\":{\\\"type\\\":\\\"invalid_request_error\\\",\\\"message\\\":\\\"messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking\\\"},\\\"request_id\\\":\\\"req_vrtx_011CTyhuTXynwxFQeCCieTz7\\\"}'No fallback model group found for original model_group=claude-4-5-sonnet-vertex. Fallbacks=[{'claude-4-5-sonnet': ['claude-4-5-sonnet-vertex']}, {'claude-4-sonnet': ['claude-4-sonnet-vertex']}, {'claude-3-7-sonnet': ['claude-3-7-sonnet-vertex']}, {'claude-3-5-sonnet': ['claude-3-5-sonnet-vertex']}, {'claude-3-haiku': ['claude-3-haiku-vertex']}, {'gpt-4.1-mini': ['gpt-4.1-nano']}]. Received Model Group=claude-4-5-sonnet-vertex\\nAvailable Model Group Fallbacks=None\\nError doing the fallback: litellm.BadRequestError: Vertex_aiException BadRequestError - b'{\\\"type\\\":\\\"error\\\",\\\"error\\\":{\\\"type\\\":\\\"invalid_request_error\\\",\\\"message\\\":\\\"messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking\\\"},\\\"request_id\\\":\\\"req_vrtx_011CTyhuTXynwxFQeCCieTz7\\\"}'No fallback model group found for original model_group=claude-4-5-sonnet-vertex. Fallbacks=[{'claude-4-5-sonnet': ['claude-4-5-sonnet-vertex']}, {'claude-4-sonnet': ['claude-4-sonnet-vertex']}, {'claude-3-7-sonnet': ['claude-3-7-sonnet-vertex']}, {'claude-3-5-sonnet': ['claude-3-5-sonnet-vertex']}, {'claude-3-haiku': ['claude-3-haiku-vertex']}, {'gpt-4.1-mini': ['gpt-4.1-nano']}] LiteLLM Retried: 1 times, LiteLLM Max Retries: 2 LiteLLM Retried: 1 times, LiteLLM Max Retries: 2\",\"type\":null,\"param\":null,\"code\":\"400\"}}","isRetryable":false,"data":{"error":{"message":"litellm.BadRequestError: BedrockException - {\"message\":\"The model returned the following errors: messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking\"}. Received Model Group=claude-4-5-sonnet\nAvailable Model Group Fallbacks=['claude-4-5-sonnet-vertex']\nError doing the fallback: litellm.BadRequestError: Vertex_aiException BadRequestError - b'{\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking\"},\"request_id\":\"req_vrtx_011CTyhuTXynwxFQeCCieTz7\"}'No fallback model group found for original model_group=claude-4-5-sonnet-vertex. Fallbacks=[{'claude-4-5-sonnet': ['claude-4-5-sonnet-vertex']}, {'claude-4-sonnet': ['claude-4-sonnet-vertex']}, {'claude-3-7-sonnet': ['claude-3-7-sonnet-vertex']}, {'claude-3-5-sonnet': ['claude-3-5-sonnet-vertex']}, {'claude-3-haiku': ['claude-3-haiku-vertex']}, {'gpt-4.1-mini': ['gpt-4.1-nano']}]. Received Model Group=claude-4-5-sonnet-vertex\nAvailable Model Group Fallbacks=None\nError doing the fallback: litellm.BadRequestError: Vertex_aiException BadRequestError - b'{\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking\"},\"request_id\":\"req_vrtx_011CTyhuTXynwxFQeCCieTz7\"}'No fallback model group found for original model_group=claude-4-5-sonnet-vertex. Fallbacks=[{'claude-4-5-sonnet': ['claude-4-5-sonnet-vertex']}, {'claude-4-sonnet': ['claude-4-sonnet-vertex']}, {'claude-3-7-sonnet': ['claude-3-7-sonnet-vertex']}, {'claude-3-5-sonnet': ['claude-3-5-sonnet-vertex']}, {'claude-3-haiku': ['claude-3-haiku-vertex']}, {'gpt-4.1-mini': ['gpt-4.1-nano']}] LiteLLM Retried: 1 times, LiteLLM Max Retries: 2 LiteLLM Retried: 1 times, LiteLLM Max Retries: 2","type":null,"param":null,"code":"400"}}}} stream error INFO 2025-10-10T14:51:38 +0ms service=session.prompt session=ses_631651ae2ffej8iZ7gQz8TeDHV type=error part ERROR 2025-10-10T14:51:38 +1ms service=session.prompt session=ses_631651ae2ffej8iZ7gQz8TeDHV error=litellm.BadRequestError: BedrockException - {"message":"The model returned the following errors: messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking"}. Received Model Group=claude-4-5-sonnet Available Model Group Fallbacks=['claude-4-5-sonnet-vertex'] Error doing the fallback: litellm.BadRequestError: Vertex_aiException BadRequestError - b'{"type":"error","error":{"type":"invalid_request_error","message":"messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking"},"request_id":"req_vrtx_011CTyhuTXynwxFQeCCieTz7"}'No fallback model group found for original model_group=claude-4-5-sonnet-vertex. Fallbacks=[{'claude-4-5-sonnet': ['claude-4-5-sonnet-vertex']}, {'claude-4-sonnet': ['claude-4-sonnet-vertex']}, {'claude-3-7-sonnet': ['claude-3-7-sonnet-vertex']}, {'claude-3-5-sonnet': ['claude-3-5-sonnet-vertex']}, {'claude-3-haiku': ['claude-3-haiku-vertex']}, {'gpt-4.1-mini': ['gpt-4.1-nano']}]. Received Model Group=claude-4-5-sonnet-vertex Available Model Group Fallbacks=None Error doing the fallback: litellm.BadRequestError: Vertex_aiException BadRequestError - b'{"type":"error","error":{"type":"invalid_request_error","message":"messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking"},"request_id":"req_vrtx_011CTyhuTXynwxFQeCCieTz7"}'No fallback model group found for original model_group=claude-4-5-sonnet-vertex. Fallbacks=[{'claude-4-5-sonnet': ['claude-4-5-sonnet-vertex']}, {'claude-4-sonnet': ['claude-4-sonnet-vertex']}, {'claude-3-7-sonnet': ['claude-3-7-sonnet-vertex']}, {'claude-3-5-sonnet': ['claude-3-5-sonnet-vertex']}, {'claude-3-haiku': ['claude-3-haiku-vertex']}, {'gpt-4.1-mini': ['gpt-4.1-nano']}] LiteLLM Retried: 1 times, LiteLLM Max Retries: 2 LiteLLM Retried: 1 times, LiteLLM Max Retries: 2 process ERROR 2025-10-10T14:51:38 +0ms service=tui message=AI_APICallError: litellm.BadRequestError: BedrockException - {"message":"The model returned the following errors: messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking"}. Received Model Group=claude-4-5-sonnet Available Model Group Fallbacks=['claude-4-5-sonnet-vertex'] Error doing the fallback: litellm.BadRequestError: Vertex_aiException BadRequestError - b'{"type":"error","error":{"type":"invalid_request_error","message":"messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking"},"request_id":"req_vrtx_011CTyhuTXynwxFQeCCieTz7"}'No fallback model group found for original model_group=claude-4-5-sonnet-vertex. Fallbacks=[{'claude-4-5-sonnet': ['claude-4-5-sonnet-vertex']}, {'claude-4-sonnet': ['claude-4-sonnet-vertex']}, {'claude-3-7-sonnet': ['claude-3-7-sonnet-vertex']}, {'claude-3-5-sonnet': ['claude-3-5-sonnet-vertex']}, {'claude-3-haiku': ['claude-3-haiku-vertex']}, {'gpt-4.1-mini': ['gpt-4.1-nano']}]. Received Model Group=claude-4-5-sonnet-vertex Available Model Group Fallbacks=None Error doing the fallback: litellm.BadRequestError: Vertex_aiException BadRequestError - b'{"type":"error","error":{"type":"invalid_request_error","message":"messages.1.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`. Please consult our documentation at https://docs.claude.com/en/docs/build-with-claude/extended-thinking"},"request_id":"req_vrtx_011CTyhuTXynwxFQeCCieTz7"}'No fallback model group found for original model_group=claude-4-5-sonnet-vertex. Fallbacks=[{'claude-4-5-sonnet': ['claude-4-5-sonnet-vertex']}, {'claude-4-sonnet': ['claude-4-sonnet-vertex']}, {'claude-3-7-sonnet': ['claude-3-7-sonnet-vertex']}, {'claude-3-5-sonnet': ['claude-3-5-sonnet-vertex']}, {'claude-3-haiku': ['claude-3-haiku-vertex']}, {'gpt-4.1-mini': ['gpt-4.1-nano']}] LiteLLM Retried: 1 times, LiteLLM Max Retries: 2 LiteLLM Retried: 1 times, LiteLLM Max Retries: 2 name=UnknownError Server error INFO 2025-10-10T14:51:38 +0ms service=server duration=0 responseInstead of logging HTTP request/responses I decided to log the chunks just before where they're processed:
Log implementation
diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 0ccb208c..6f762007 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -892,6 +892,7 @@ export namespace SessionPrompt { input.abort.throwIfAborted() log.info("part", { type: value.type, + data: value, }) switch (value.type) { case "start":
Full log
{"type":"start"} {"type":"reasoning-start","id":"reasoning-0"} {"type":"reasoning-delta","id":"reasoning-0","text":"The user is asking me to think"} {"type":"reasoning-delta","id":"reasoning-0","text":" of 2 different commands and run"} {"type":"reasoning-delta","id":"reasoning-0","text":" them. They"} {"type":"reasoning-delta","id":"reasoning-0","text":" haven"} {"type":"reasoning-delta","id":"reasoning-0","text":"'t specified what"} {"type":"reasoning-delta","id":"reasoning-0","text":" kin"} {"type":"reasoning-delta","id":"reasoning-0","text":"d of commands,"} {"type":"reasoning-delta","id":"reasoning-0","text":" so"} {"type":"reasoning-delta","id":"reasoning-0","text":" I should choose"} {"type":"reasoning-delta","id":"reasoning-0","text":" some"} {"type":"reasoning-delta","id":"reasoning-0","text":" reasonable"} {"type":"reasoning-delta","id":"reasoning-0","text":","} {"type":"reasoning-delta","id":"reasoning-0","text":" safe"} {"type":"reasoning-delta","id":"reasoning-0","text":" commands that will"} {"type":"reasoning-delta","id":"reasoning-0","text":" demonstrate"} {"type":"reasoning-delta","id":"reasoning-0","text":" my capability. I shoul"} {"type":"reasoning-delta","id":"reasoning-0","text":"d run"} {"type":"reasoning-delta","id":"reasoning-0","text":" them"} {"type":"reasoning-delta","id":"reasoning-0","text":" in parallel since"} {"type":"reasoning-delta","id":"reasoning-0","text":" they are"} {"type":"reasoning-delta","id":"reasoning-0","text":" independent."} {"type":"reasoning-delta","id":"reasoning-0","text":"\n\nI'll choose"} {"type":"reasoning-delta","id":"reasoning-0","text":":"} {"type":"reasoning-delta","id":"reasoning-0","text":"\n1. `"} {"type":"reasoning-delta","id":"reasoning-0","text":"pw"} {"type":"reasoning-delta","id":"reasoning-0","text":"d` - to show the"} {"type":"reasoning-delta","id":"reasoning-0","text":" current working"} {"type":"reasoning-delta","id":"reasoning-0","text":" directory\n2. `date"} {"type":"reasoning-delta","id":"reasoning-0","text":"` - to show the current date an"} {"type":"reasoning-delta","id":"reasoning-0","text":"d time\n\nThese are simple"} {"type":"reasoning-delta","id":"reasoning-0","text":", safe"} {"type":"reasoning-delta","id":"reasoning-0","text":" commands that don't modify"} {"type":"reasoning-delta","id":"reasoning-0","text":" anything"} {"type":"reasoning-delta","id":"reasoning-0","text":" an"} {"type":"reasoning-delta","id":"reasoning-0","text":"d will"} {"type":"reasoning-delta","id":"reasoning-0","text":" provide"} {"type":"reasoning-delta","id":"reasoning-0","text":" useful"} {"type":"reasoning-delta","id":"reasoning-0","text":" information."} {"type":"tool-input-start","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","toolName":"bash","dynamic":false} {"type":"tool-input-delta","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","delta":""} {"type":"tool-input-delta","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","delta":"{\"co"} {"type":"tool-input-delta","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","delta":"mmand\": "} {"type":"tool-input-delta","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","delta":"\"pwd\""} {"type":"tool-input-delta","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","delta":", \"d"} {"type":"tool-input-delta","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","delta":"escrip"} {"type":"tool-input-delta","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","delta":"ti"} {"type":"tool-input-delta","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","delta":"on\": \""} {"type":"tool-input-delta","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","delta":"Sho"} {"type":"tool-input-delta","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","delta":"w c"} {"type":"tool-input-delta","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","delta":"urrent work"} {"type":"tool-input-delta","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","delta":"ing directo"} {"type":"tool-input-delta","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","delta":"ry\"}"} {"type":"tool-input-end","id":"tooluse_-iPM9PVMQnehA0Ss7xnQJA"} {"type":"tool-call","toolCallId":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","toolName":"bash","input":{"command":"pwd","description":"Show current working directory"}} {"type":"tool-input-start","id":"tooluse_XTR012irSeWNkRiC_6AW1w","toolName":"bash","dynamic":false} {"type":"tool-input-delta","id":"tooluse_XTR012irSeWNkRiC_6AW1w","delta":""} {"type":"tool-input-delta","id":"tooluse_XTR012irSeWNkRiC_6AW1w","delta":"{\"c"} {"type":"tool-input-delta","id":"tooluse_XTR012irSeWNkRiC_6AW1w","delta":"ommand\": "} {"type":"tool-input-delta","id":"tooluse_XTR012irSeWNkRiC_6AW1w","delta":"\"date\""} {"type":"tool-input-delta","id":"tooluse_XTR012irSeWNkRiC_6AW1w","delta":", "} {"type":"tool-input-delta","id":"tooluse_XTR012irSeWNkRiC_6AW1w","delta":"\"description"} {"type":"tool-input-delta","id":"tooluse_XTR012irSeWNkRiC_6AW1w","delta":"\": \"Displa"} {"type":"tool-input-delta","id":"tooluse_XTR012irSeWNkRiC_6AW1w","delta":"y c"} {"type":"tool-input-delta","id":"tooluse_XTR012irSeWNkRiC_6AW1w","delta":"urrent date "} {"type":"tool-input-delta","id":"tooluse_XTR012irSeWNkRiC_6AW1w","delta":"and time"} {"type":"tool-input-delta","id":"tooluse_XTR012irSeWNkRiC_6AW1w","delta":"\"}"} {"type":"tool-input-end","id":"tooluse_XTR012irSeWNkRiC_6AW1w"} {"type":"tool-call","toolCallId":"tooluse_XTR012irSeWNkRiC_6AW1w","toolName":"bash","input":{"command":"date","description":"Display current date and time"}} {"type":"reasoning-end","id":"reasoning-0"} {"type":"tool-result","toolCallId":"tooluse_-iPM9PVMQnehA0Ss7xnQJA","toolName":"bash","input":{"command":"pwd","description":"Show current working directory"},"output":{"title":"pwd","metadata":{"output":"/Users/jessevanderpluijm/Code/forks/opencode\n","exit":0,"description":"Show current working directory"},"output":"/Users/jessevanderpluijm/Code/forks/opencode\n"}} {"type":"tool-result","toolCallId":"tooluse_XTR012irSeWNkRiC_6AW1w","toolName":"bash","input":{"command":"date","description":"Display current date and time"},"output":{"title":"date","metadata":{"output":"Sat Oct 11 07:31:36 CEST 2025\n","exit":0,"description":"Display current date and time"},"output":"Sat Oct 11 07:31:36 CEST 2025\n"}} {"type":"finish-step","finishReason":"tool-calls","usage":{"inputTokens":12574,"outputTokens":237,"totalTokens":12811,"reasoningTokens":99,"cachedInputTokens":12565},"providerMetadata":{"bonzai":{}},"response":{"id":"chatcmpl-43062c80-cbc1-471c-a7da-9ea23c7961a7","timestamp":"2025-10-11T05:31:33.000Z","modelId":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","headers":{"connection":"keep-alive","content-type":"text/event-stream; charset=utf-8","date":"Sat, 11 Oct 2025 05:31:33 GMT","server":"uvicorn","transfer-encoding":"chunked","x-litellm-call-id":"1c4ec28b-b5f2-41d1-90c6-b0d15e79da55","x-litellm-key-spend":"31.235653150000022","x-litellm-model-api-base":"https://bedrock-runtime.eu-central-1.amazonaws.com/model/eu.anthropic.claude-sonnet-4-5-20250929-v1%3A0/converse-stream","x-litellm-model-id":"b13a5f4ec04005c9b991a3723cfa44a8e388fda30c782189d08741a1dbb3472d","x-litellm-version":"1.77.5"}}} {"type":"finish","finishReason":"tool-calls","totalUsage":{"inputTokens":12574,"outputTokens":237,"totalTokens":12811,"reasoningTokens":99,"cachedInputTokens":12565}}Just looking at reasoning related chunks:
{"type":"reasoning-start","id":"reasoning-0"} {"type":"reasoning-delta","id":"reasoning-0","text":"The user is asking me to think"} ... {"type":"reasoning-delta","id":"reasoning-0","text":" information."} {"type":"reasoning-end","id":"reasoning-0"}It doesn't seem like any
providerMetadatais there... 🤔The only
providerMetadatais in the finish-step chunk:{ "type": "finish-step", "finishReason": "tool-calls", "usage": { // ... }, "providerMetadata": { "bonzai": {} // name of my litellm provider }, "response": { // ... } }@jessevdp are you saying we aren't parsing it correctly? Or that your proxy may be dropping information?
I’m unsure at this point. I’m assuming it’s either:
- the server isn’t sending all the required metadata
- the server is sending data correctly but
@ai-sdk/openai-compatible(or opencode?) isn’t parsing it correctly.
I have a bit of trouble interpreting those streamed chunks at HTTP log level. I’m not entirely sure what I’m looking for.
I so something that looks vaguely like the
signaturemetadata coming through in the HTTP stream.data: {"id":"chatcmpl-92a96b72-6a53-45ca-bb3a-5e29ebc29ba6","created":1760107884,"model":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"reasoning_content":"","thinking_blocks":[{"type":"thinking","signature":"Et4FCkgICBABGAIqQFm+AC4NJF4/9kEyplZ9WB9i1vplCHJCTSVmWfOvoNZ/5ifWsh40lyc/NiFcEpt2wrHpaxCEencZdL9BWp5YbeMSDDNc6kP8/Ro71T9G6hoMltAMuQwesnxDk9x7IjBvqhVIo5bIBO7YvAbsDyABrDXCECEYJluW3cRpYj90VG0IirCBxfozHdmQVI6j87QqwwTyQ8ILIWStyDhCJXBmPQsI1lOhs0aFKEs4D+FeDkZPwo6lehfkZ9XDfdvlGpD7zoiSPp8OpmiZUqQoeGIgC+RPcq04JUind5raJOWMzxf4nM681Nqqe99tMQRrAP67h+7YEWrH0O/YTZ1VRJ4dGVJ3q82ABmFLJu/7DgmEATyhWxQ7IdmMik+YYTHiSMdURkSm6Jvp20QsYPMB84BEM3UHIJcGyQQmQZ0ibRvtho1oPQrZxpcnpPuO0LRl/1GTRR7xgP3n2zm2f5l4bL1dLxl3BQLBH9NNG8RoA3LjcZ4T1v4IGbOsuGJZD+AZVr1vT0ZnkShcF8S+vHfuP8Y25AaFFxIAhZn9vC/FfrDVreQSEiFgLqOEZe1EP77b12zC0mQAoLPfdQLjPihASwNLcmV++wEOEq6ziJcfFw0137BxGo6d/Y9cj0nvmIqCAkCHo5J85gGMJBjIbBwHdEhKth5iT6tRITIDyCGBuTg1rdYldMz7ofefZaYCq2QTt2JHFaTsdxc4tobZExVCSfgrOUFpfCgE/egnJEAVk9gXYqKDk+Fua2aBwjpVD2NhcKkBDAUSYrYYNWrsbLDGoCnBgorze8nDKfRI67vNxRnQQr1ONiPlcti8rS7d0Q/fxBJjDlwNN3IFiRtdE2quRzr4nfVSuoXw8UTawMwsTzaLRG0SkuF66ximFkl0DyYt1USxJBCUHt9gO2tq1WBo0BYFkTAygUN6GTMB0G2rvbLSig08f8PwH06eZ5hCOkmZtVuenmZ7PRcYAQ==","thinking":""}],"provider_specific_fields":{"reasoningContent":{"signature":"Et4FCkgICBABGAIqQFm+AC4NJF4/9kEyplZ9WB9i1vplCHJCTSVmWfOvoNZ/5ifWsh40lyc/NiFcEpt2wrHpaxCEencZdL9BWp5YbeMSDDNc6kP8/Ro71T9G6hoMltAMuQwesnxDk9x7IjBvqhVIo5bIBO7YvAbsDyABrDXCECEYJluW3cRpYj90VG0IirCBxfozHdmQVI6j87QqwwTyQ8ILIWStyDhCJXBmPQsI1lOhs0aFKEs4D+FeDkZPwo6lehfkZ9XDfdvlGpD7zoiSPp8OpmiZUqQoeGIgC+RPcq04JUind5raJOWMzxf4nM681Nqqe99tMQRrAP67h+7YEWrH0O/YTZ1VRJ4dGVJ3q82ABmFLJu/7DgmEATyhWxQ7IdmMik+YYTHiSMdURkSm6Jvp20QsYPMB84BEM3UHIJcGyQQmQZ0ibRvtho1oPQrZxpcnpPuO0LRl/1GTRR7xgP3n2zm2f5l4bL1dLxl3BQLBH9NNG8RoA3LjcZ4T1v4IGbOsuGJZD+AZVr1vT0ZnkShcF8S+vHfuP8Y25AaFFxIAhZn9vC/FfrDVreQSEiFgLqOEZe1EP77b12zC0mQAoLPfdQLjPihASwNLcmV++wEOEq6ziJcfFw0137BxGo6d/Y9cj0nvmIqCAkCHo5J85gGMJBjIbBwHdEhKth5iT6tRITIDyCGBuTg1rdYldMz7ofefZaYCq2QTt2JHFaTsdxc4tobZExVCSfgrOUFpfCgE/egnJEAVk9gXYqKDk+Fua2aBwjpVD2NhcKkBDAUSYrYYNWrsbLDGoCnBgorze8nDKfRI67vNxRnQQr1ONiPlcti8rS7d0Q/fxBJjDlwNN3IFiRtdE2quRzr4nfVSuoXw8UTawMwsTzaLRG0SkuF66ximFkl0DyYt1USxJBCUHt9gO2tq1WBo0BYFkTAygUN6GTMB0G2rvbLSig08f8PwH06eZ5hCOkmZtVuenmZ7PRcYAQ=="}},"content":""}}],"provider_specific_fields":{}}That seems to be the final
reasoningrelated HTTP chunk. The others just have incremental “actual content” / text.Is this something that’s special cases for
anthropic? Should I be looking at the adapter? Is using anthropic thinking mode via openAI compatible API the root of the problem here? Or something else?Why is the missing metadata a problem? It seems that the chunks are correctly received as reasoning start/delta/finish etc.
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
Related issues reported to LiteLLM
- [Bug]: Bedrock thinking model with tools fail with Expected
thinkingorredacted_thinking, but foundtool_use. BerriAI/litellm#14194 - [Bug]: reasoning content is not returned from anthropic when using aresponses BerriAI/litellm#11302
- (seems to be "fixed" by patching the LiteLLM python client)
- [Bug]: anthropic extended thinking not working with extended thinking + "output-128k-2025-02-19" BerriAI/litellm#9020
- [Bug]: Bedrock thinking model with tools fail with Expected
I'm investigating if this might be a problem in
@ai-sdk/openai-compatible.I added some middleware to streamText via wrapLanguageModel to log the params sent to doStream
diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 6f762007..d2798bcc 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -315,6 +315,12 @@ export namespace SessionPrompt { return args.params }, }, + { + async wrapStream(args) { + log.info("wrapStream", { params: args.params }) + return args.doStream(args) + } + } ], }), })
doStream params
{ "maxOutputTokens": 32000, "temperature": 1, "tools": [ // ... ], "toolChoice": { "type": "auto" }, "prompt": [ { "role": "system", "content": "...", "providerOptions": { // ... } }, { "role": "system", "content": "...", "providerOptions": { // ... } }, { "role": "user", "content": [ { "type": "text", "text": "Think of 2 different commands and run them" } ] }, { "role": "assistant", "content": [ { "type": "reasoning", "text": "The user wants me to think of 2 different commands and run them. They didn't specify what kind of commands, so I should choose some simple, harmless commands that would be informative or useful. Since I'm in a git repository according to the environment info, I could run git-related commands, or just general system commands.\n\nLet me pick two different commands:\n1. `pwd` - to show the current working directory\n2. `date` - to show the current date and time\n\nThese are simple, safe commands that don't modify anything. I can run them in parallel since they're independent." }, { "type": "tool-call", "toolCallId": "toolu_vrtx_016xYpaUEa2znN1jYMrzrt9Z", "toolName": "bash", "input": { "command": "pwd", "description": "Print current working directory" } }, { "type": "tool-call", "toolCallId": "toolu_vrtx_01CgPSgtTguW5DCsaYFJW6iq", "toolName": "bash", "input": { "command": "date", "description": "Show current date and time" }, "providerOptions": { // ... } } ] }, { "role": "tool", "content": [ { "type": "tool-result", "toolCallId": "toolu_vrtx_016xYpaUEa2znN1jYMrzrt9Z", "toolName": "bash", "output": { "type": "text", "value": "/Users/jessevanderpluijm/Code/forks/opencode\n" } }, { "type": "tool-result", "toolCallId": "toolu_vrtx_01CgPSgtTguW5DCsaYFJW6iq", "toolName": "bash", "output": { "type": "text", "value": "Mon Oct 13 15:05:08 CEST 2025\n" }, "providerOptions": { // ... } } ] } ], "providerOptions": { "bonzai": { "thinking": { "type": "enabled", "budget_tokens": 16000 } } }, "abortSignal": {}, "includeRawChunks": false }I then log the HTTP request sent by
@ai-sdk/openai-compatibleusing the HTTP log implementation I provided earlier.HTTP request body
{ "model": "claude-sonnet-4-5-20250929", "max_tokens": 32000, "temperature": 1, "thinking": { "type": "enabled", "budget_tokens": 16000 }, "messages": [ { "role": "system", "content": "...", "cache_control": { "type": "ephemeral" } }, { "role": "system", "content": "...", "cache_control": { "type": "ephemeral" } }, { "role": "user", "content": "Think of 2 different commands and run them" }, { "role": "assistant", "content": "", "tool_calls": [ { "id": "toolu_vrtx_016xYpaUEa2znN1jYMrzrt9Z", "type": "function", "function": { "name": "bash", "arguments": "{\"command\":\"pwd\",\"description\":\"Print current working directory\"}" } }, { "id": "toolu_vrtx_01CgPSgtTguW5DCsaYFJW6iq", "type": "function", "function": { "name": "bash", "arguments": "{\"command\":\"date\",\"description\":\"Show current date and time\"}" }, "cache_control": { "type": "ephemeral" } } ] }, { "role": "tool", "tool_call_id": "toolu_vrtx_016xYpaUEa2znN1jYMrzrt9Z", "content": "/Users/jessevanderpluijm/Code/forks/opencode\n" }, { "role": "tool", "tool_call_id": "toolu_vrtx_01CgPSgtTguW5DCsaYFJW6iq", "content": "Mon Oct 13 15:05:08 CEST 2025\n", "cache_control": { "type": "ephemeral" } } ], "tools": [ // ... ], "tool_choice": "auto", "stream": true, "stream_options": { "include_usage": true } }Note how the reasoning content WAS present in the
paramssent todoStreambut WASN'T in the HTTP request. I'm going to take a closer look at@ai-sdk/openai-compatibleto see what's going on.sounds good ty!
I think / am afraid that using Anthropic thinking mode is fundamentally incompatible with using an OpenAI compatible API. The
@ai-sdk/openai-compatibleclient just ignores the "reasoning" parts of"assistant"messages when making a request:This is makes it incompatible with Anthropic extended thinking mode because that requires perserving the thinking blocks.
I'm unsure if the "OpenAI compatible API" spec would allow for reasoning parts to be sent back (in which case we could add an option to the
@ai-sdk/openai-compatibleclient to optionally include the reasoning parts, and then hope that the server [LiteLLM] could process that correctly...), or if this is just not permitted.Sorry to have wasted your time :/
I hope this issue thread is at least helpful to others who are in the same situation as me. (There seem to be at least a couple of LiteLLM users out there.)
Reacted by Preetesh Jain, Trung-Tin Pham, Nasef Khan, Quinkroesb468 and FrostByghtehey no problem dw about it
Reacted by Jesse van der Pluijm- added a commit that references this issue
on Dec 26, 2025 I ran into the same issue when using the Claude model via Open WebUI as a proxy
Reacted by Diego Andres Acostasame problem with openwebui and claude models
Reacted by Diego Andres AcostaSounds like potential bug w/ ur proxy?
Related: #2599
A session share link where this error happened: https://opencode.ai/s/iDe3unHA
My config
{ "$schema": "https://opencode.ai/config.json", "provider": { "my-litellm-provider": { "name": "My LiteLLM Provider", "npm": "@ai-sdk/openai-compatible", "options": { "baseURL": "https://my-provider.com", "apiKey": "...", "includeUsage": true }, "models": { "claude-4-5-sonnet": { "name": "Anthropic Claude Sonnet 4.5", "release_date": "2025-09-29", "attachment": true, "reasoning": true, "temperature": true, "tool_call": true, "limit": { "context": 200000, "output": 64000 }, "options": { "thinking": { "type": "enabled", "budget_tokens": 16000, }, } }, } } } }