No reasoning at all through Github Copilot provider #4182

Closed
opened 2026-02-16 17:42:55 -05:00 by yindo · 34 comments
Owner

Originally created by @Coruscant11 on GitHub (Jan 4, 2026).

Originally assigned to: @rekram1-node on GitHub.

Description

Validate thinking in VSCode

Image Image

Attempt to get thinking in opencode

opencode.jsonc

{
  "$schema": "https://opencode.ai/config.json",
  "theme": "aura",
  "autoupdate": true,
  "provider": {
    "github-copilot": {
      "models": {
        "[Custom] Opus 4.5 Thinking": {
          "id": "claude-opus-4.5",
          "reasoning": true,
          "options": {
            "thinking": {
              "type": "enabled",
              "budgetTokens": 32000,
            },
          }
        },
      }
    }
  }
}

A conversation example:

Image

opencode export

{
  "info": {
    "id": "ses_4753afc9affenaSxWVHstiDVAN",
    "version": "1.1.1",
    "projectID": "e53faf218247b17967230b742668df6addde9727",
    "directory": "/home/jcarlens/Development/sesm",
    "title": "Checking assistant reasoning",
    "time": {
      "created": 1767559725925,
      "updated": 1767559730475
    },
    "summary": {
      "additions": 0,
      "deletions": 0,
      "files": 0
    }
  },
  "messages": [
    {
      "info": {
        "id": "msg_b8ac50368001zOrnH6Xk5rnVK3",
        "sessionID": "ses_4753afc9affenaSxWVHstiDVAN",
        "role": "user",
        "time": {
          "created": 1767559725933
        },
        "summary": {
          "title": "Asking about reasoning",
          "diffs": []
        },
        "agent": "build",
        "model": {
          "providerID": "github-copilot",
          "modelID": "[Custom] Opus 4.5 Thinking"
        }
      },
      "parts": [
        {
          "id": "prt_b8ac50368002yxYgBf1OX3yO1R",
          "sessionID": "ses_4753afc9affenaSxWVHstiDVAN",
          "messageID": "msg_b8ac50368001zOrnH6Xk5rnVK3",
          "type": "text",
          "text": "Are you reasoning?"
        }
      ]
    },
    {
      "info": {
        "id": "msg_b8ac503730018iRxad0NY14TX9",
        "sessionID": "ses_4753afc9affenaSxWVHstiDVAN",
        "role": "assistant",
        "time": {
          "created": 1767559725939,
          "completed": 1767559730467
        },
        "parentID": "msg_b8ac50368001zOrnH6Xk5rnVK3",
        "modelID": "[Custom] Opus 4.5 Thinking",
        "providerID": "github-copilot",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/home/jcarlens/Development/sesm",
          "root": "/home/jcarlens/Development/sesm"
        },
        "cost": 0,
        "tokens": {
          "input": 327,
          "output": 77,
          "reasoning": 0,
          "cache": {
            "read": 10534,
            "write": 0
          }
        },
        "finish": "stop"
      },
      "parts": [
        {
          "id": "prt_b8ac5101b001lc4JrFFJfRMDvj",
          "sessionID": "ses_4753afc9affenaSxWVHstiDVAN",
          "messageID": "msg_b8ac503730018iRxad0NY14TX9",
          "type": "step-start",
          "snapshot": "e0066eb511d26f679f2ba4739f14047f10f435aa"
        },
        {
          "id": "prt_b8ac5101c001ZUyiAP75JVK2pe",
          "sessionID": "ses_4753afc9affenaSxWVHstiDVAN",
          "messageID": "msg_b8ac503730018iRxad0NY14TX9",
          "type": "text",
          "text": "No, I'm not using an extended reasoning or \"thinking\" mode. I'm a standard Claude model responding directly to your messages. I process your input and generate responses, but I don't have a separate visible chain-of-thought or reasoning trace that I'm working through before answering.\n\nIs there something specific you'd like help with in your project?",
          "time": {
            "start": 1767559730442,
            "end": 1767559730442
          }
        },
        {
          "id": "prt_b8ac5150c001FbC86cMHHQDIoA",
          "sessionID": "ses_4753afc9affenaSxWVHstiDVAN",
          "messageID": "msg_b8ac503730018iRxad0NY14TX9",
          "type": "step-finish",
          "reason": "stop",
          "snapshot": "e0066eb511d26f679f2ba4739f14047f10f435aa",
          "cost": 0,
          "tokens": {
            "input": 327,
            "output": 77,
            "reasoning": 0,
            "cache": {
              "read": 10534,
              "write": 0
            }
          }
        }
      ]
    }
  ]
}

I also tried to put any value in the reasoning, nothing seems to break the API. Maybe the options are ignored?

Thanks for your hardwork!

Plugins

No response

OpenCode version

1.1.1

Steps to reproduce

  1. Connect to github copilot provider
  2. Either use built-in Opus 4.5 with any built-in variants, or try to configure a custom model
  3. Ask anything to see a chain of thougth

Screenshot and/or share link

No response

Operating System

Ubuntu 24.04

Terminal

Ghostty

Originally created by @Coruscant11 on GitHub (Jan 4, 2026). Originally assigned to: @rekram1-node on GitHub. ### Description ## Validate thinking in VSCode <img width="546" height="175" alt="Image" src="https://github.com/user-attachments/assets/f2ab81f1-41dc-4680-b7a0-b73987b3d47c" /> <img width="536" height="300" alt="Image" src="https://github.com/user-attachments/assets/b9c45777-1420-4f70-965c-5bedb53635a3" /> ## Attempt to get thinking in `opencode` `opencode.jsonc` ```jsonc { "$schema": "https://opencode.ai/config.json", "theme": "aura", "autoupdate": true, "provider": { "github-copilot": { "models": { "[Custom] Opus 4.5 Thinking": { "id": "claude-opus-4.5", "reasoning": true, "options": { "thinking": { "type": "enabled", "budgetTokens": 32000, }, } }, } } } } ``` A conversation example: <img width="882" height="309" alt="Image" src="https://github.com/user-attachments/assets/d9b11bf1-ad23-419d-839d-b9da96149bcc" /> `opencode export` ```json { "info": { "id": "ses_4753afc9affenaSxWVHstiDVAN", "version": "1.1.1", "projectID": "e53faf218247b17967230b742668df6addde9727", "directory": "/home/jcarlens/Development/sesm", "title": "Checking assistant reasoning", "time": { "created": 1767559725925, "updated": 1767559730475 }, "summary": { "additions": 0, "deletions": 0, "files": 0 } }, "messages": [ { "info": { "id": "msg_b8ac50368001zOrnH6Xk5rnVK3", "sessionID": "ses_4753afc9affenaSxWVHstiDVAN", "role": "user", "time": { "created": 1767559725933 }, "summary": { "title": "Asking about reasoning", "diffs": [] }, "agent": "build", "model": { "providerID": "github-copilot", "modelID": "[Custom] Opus 4.5 Thinking" } }, "parts": [ { "id": "prt_b8ac50368002yxYgBf1OX3yO1R", "sessionID": "ses_4753afc9affenaSxWVHstiDVAN", "messageID": "msg_b8ac50368001zOrnH6Xk5rnVK3", "type": "text", "text": "Are you reasoning?" } ] }, { "info": { "id": "msg_b8ac503730018iRxad0NY14TX9", "sessionID": "ses_4753afc9affenaSxWVHstiDVAN", "role": "assistant", "time": { "created": 1767559725939, "completed": 1767559730467 }, "parentID": "msg_b8ac50368001zOrnH6Xk5rnVK3", "modelID": "[Custom] Opus 4.5 Thinking", "providerID": "github-copilot", "mode": "build", "agent": "build", "path": { "cwd": "/home/jcarlens/Development/sesm", "root": "/home/jcarlens/Development/sesm" }, "cost": 0, "tokens": { "input": 327, "output": 77, "reasoning": 0, "cache": { "read": 10534, "write": 0 } }, "finish": "stop" }, "parts": [ { "id": "prt_b8ac5101b001lc4JrFFJfRMDvj", "sessionID": "ses_4753afc9affenaSxWVHstiDVAN", "messageID": "msg_b8ac503730018iRxad0NY14TX9", "type": "step-start", "snapshot": "e0066eb511d26f679f2ba4739f14047f10f435aa" }, { "id": "prt_b8ac5101c001ZUyiAP75JVK2pe", "sessionID": "ses_4753afc9affenaSxWVHstiDVAN", "messageID": "msg_b8ac503730018iRxad0NY14TX9", "type": "text", "text": "No, I'm not using an extended reasoning or \"thinking\" mode. I'm a standard Claude model responding directly to your messages. I process your input and generate responses, but I don't have a separate visible chain-of-thought or reasoning trace that I'm working through before answering.\n\nIs there something specific you'd like help with in your project?", "time": { "start": 1767559730442, "end": 1767559730442 } }, { "id": "prt_b8ac5150c001FbC86cMHHQDIoA", "sessionID": "ses_4753afc9affenaSxWVHstiDVAN", "messageID": "msg_b8ac503730018iRxad0NY14TX9", "type": "step-finish", "reason": "stop", "snapshot": "e0066eb511d26f679f2ba4739f14047f10f435aa", "cost": 0, "tokens": { "input": 327, "output": 77, "reasoning": 0, "cache": { "read": 10534, "write": 0 } } } ] } ] } ``` I also tried to put any value in the `reasoning`, nothing seems to break the API. Maybe the options are ignored? Thanks for your hardwork! ### Plugins _No response_ ### OpenCode version 1.1.1 ### Steps to reproduce 1. Connect to github copilot provider 2. Either use built-in Opus 4.5 with any built-in variants, or try to configure a custom model 3. Ask anything to see a chain of thougth ### Screenshot and/or share link _No response_ ### Operating System Ubuntu 24.04 ### Terminal Ghostty
yindo added the bug label 2026-02-16 17:42:55 -05:00
yindo closed this issue 2026-02-16 17:42:55 -05:00
Author
Owner

@Coruscant11 commented on GitHub (Jan 4, 2026):

Note: I did the same kind of exercice with GPT 5.2 (with the reasoning effort settings), same issue.

@Coruscant11 commented on GitHub (Jan 4, 2026): Note: I did the same kind of exercice with GPT 5.2 (with the reasoning effort settings), same issue.
Author
Owner

@Coruscant11 commented on GitHub (Jan 4, 2026):

I tried to run mitmproxy to see VSCode requests body.
Here is a snippet:

{
  "messages": [
    {
      "role": "system",
      "content": "You are an expert AI...",
      "copilot_cache_control": {
        "type": "ephemeral"
      }
    }
  ],
  "model": "claude-opus-4.5",
  "temperature": 0,
  "top_p": 1,
  "max_tokens": 16000,
  "tools": [],
  "n": 1,
  "stream": true,
  "thinking_budget": 15999
}

I removed some useless details.
It seems like it defines a thinking_budget field in the root of the JSON payload the the /completions endpoint. Interesting.

@Coruscant11 commented on GitHub (Jan 4, 2026): I tried to run `mitmproxy` to see VSCode requests body. Here is a snippet: ```json { "messages": [ { "role": "system", "content": "You are an expert AI...", "copilot_cache_control": { "type": "ephemeral" } } ], "model": "claude-opus-4.5", "temperature": 0, "top_p": 1, "max_tokens": 16000, "tools": [], "n": 1, "stream": true, "thinking_budget": 15999 } ``` I removed some useless details. It seems like it defines a `thinking_budget` field in the root of the JSON payload the the `/completions` endpoint. Interesting.
Author
Owner

@Coruscant11 commented on GitHub (Jan 4, 2026):

GPT 5.2 through copilot:

{
  "model": "gpt-5.2",
  "input": [
    {
      "role": "system",
      "content": []
    }
  ],
  "stream": true,
  "tools": [],
  "max_output_tokens": 64000,
  "store": false,
  "truncation": "disabled",
  "reasoning": {
    "effort": "high",
    "summary": "detailed"
  },
  "include": [
    "reasoning.encrypted_content"
  ]

We can see the reasoning and include at the root too.
From what I understood, this is because it uses the Responses API. While opencode use the completions one for my test prompts. OpenCode is apparently using Respones API only for codex according to my opencode thread.

@Coruscant11 commented on GitHub (Jan 4, 2026): GPT 5.2 through copilot: ```json { "model": "gpt-5.2", "input": [ { "role": "system", "content": [] } ], "stream": true, "tools": [], "max_output_tokens": 64000, "store": false, "truncation": "disabled", "reasoning": { "effort": "high", "summary": "detailed" }, "include": [ "reasoning.encrypted_content" ] ``` We can see the `reasoning` and `include` at the root too. From what I understood, this is because it uses the Responses API. While opencode use the completions one for my test prompts. OpenCode is apparently using Respones API only for codex according to my opencode thread.
Author
Owner

@NicolaiOksen commented on GitHub (Jan 7, 2026):

I'm seeing the same issue. Would love to be able to configure thinking/reasoning for Copilot models.

@NicolaiOksen commented on GitHub (Jan 7, 2026): I'm seeing the same issue. Would love to be able to configure thinking/reasoning for Copilot models.
Author
Owner

@jbuckmccready commented on GitHub (Jan 9, 2026):

This is a critical bug if wanting to use copilot provider as there is a huge difference for models like gpt 5.2 with reasoning on/off.

@jbuckmccready commented on GitHub (Jan 9, 2026): This is a critical bug if wanting to use copilot provider as there is a huge difference for models like gpt 5.2 with reasoning on/off.
Author
Owner

@pushad commented on GitHub (Jan 12, 2026):

Also would like to know if this is getting implemented.

@pushad commented on GitHub (Jan 12, 2026): Also would like to know if this is getting implemented.
Author
Owner

@dreambit commented on GitHub (Jan 12, 2026):

same for me

@dreambit commented on GitHub (Jan 12, 2026): same for me
Author
Owner

@iamim commented on GitHub (Jan 13, 2026):

Would be very helpful to have it since Anthropic subscription is not an option anymore.

@iamim commented on GitHub (Jan 13, 2026): Would be very helpful to have it since Anthropic subscription is not an option anymore.
Author
Owner

@hazrid93 commented on GitHub (Jan 15, 2026):

so is it actually reasoning but we dont see the thinking block or its not reasoning at all?

@hazrid93 commented on GitHub (Jan 15, 2026): so is it actually reasoning but we dont see the thinking block or its not reasoning at all?
Author
Owner

@Coruscant11 commented on GitHub (Jan 16, 2026):

@hazrid93 no reasoning at all.

@Coruscant11 commented on GitHub (Jan 16, 2026): @hazrid93 no reasoning at all.
Author
Owner

@arfadex commented on GitHub (Jan 16, 2026):

Hope this gets fixed

@arfadex commented on GitHub (Jan 16, 2026): Hope this gets fixed
Author
Owner

@hazrid93 commented on GitHub (Jan 16, 2026):

@thdxr hope this get priority

@hazrid93 commented on GitHub (Jan 16, 2026): @thdxr hope this get priority
Author
Owner

@rekram1-node commented on GitHub (Jan 16, 2026):

Looking into it

@rekram1-node commented on GitHub (Jan 16, 2026): Looking into it
Author
Owner

@Coruscant11 commented on GitHub (Jan 16, 2026):

Thank you so much for your hard work @rekram1-node
There is a HUGE pool of copilot users as mostly every large companies that are Microsoft customers paid for it, this will be insanely helpful

@Coruscant11 commented on GitHub (Jan 16, 2026): Thank you so much for your hard work @rekram1-node There is a HUGE pool of copilot users as mostly every large companies that are Microsoft customers paid for it, this will be insanely helpful
Author
Owner

@Coruscant11 commented on GitHub (Jan 16, 2026):

The issue is for both GPT and Claude

@Coruscant11 commented on GitHub (Jan 16, 2026): The issue is for both GPT and Claude
Author
Owner

@nesl247 commented on GitHub (Jan 16, 2026):

Image

We tried directly through Zen as well, and this was the answer we got. This seems to differ from what https://opencode.ai/docs/models/#variants says since it should have said yes.

Image

I had to enable the high variant manually (different than the docs state).

And here it is again with High via Copilot:

Image

I know others already confirmed the issue, simply pointing out that there seems to be a lot of inconsistencies. I'm not sure if the "reasoning" answer is something that would make sense to only be triggered through the thinking tool or not. Zed (zed.dev) (using Copilot) also has the same issue.

@nesl247 commented on GitHub (Jan 16, 2026): <img width="1738" height="238" alt="Image" src="https://github.com/user-attachments/assets/0c45db75-ad5a-408e-9b02-7ed5a891a9c6" /> We tried directly through Zen as well, and this was the answer we got. This seems to differ from what https://opencode.ai/docs/models/#variants says since it should have said yes. <img width="1772" height="244" alt="Image" src="https://github.com/user-attachments/assets/eb37e470-8c8f-4879-93c4-d93750f37c78" /> I had to enable the high variant manually (different than the docs state). And here it is again with High via Copilot: <img width="1807" height="251" alt="Image" src="https://github.com/user-attachments/assets/92d1b762-4fcc-457b-b9df-6f0ea9545f37" /> I know others already confirmed the issue, simply pointing out that there seems to be a lot of inconsistencies. I'm not sure if the "reasoning" answer is something that would make sense to only be triggered through the thinking tool or not. Zed (zed.dev) (using Copilot) also has the same issue.
Author
Owner

@jbuckmccready commented on GitHub (Jan 16, 2026):

@nesl247 you can tell by how long it takes to respond, if you set it to high/xhigh reasoning and give it something that is complex to solve it will start outputting non-thinking tokens immediately which makes it pretty obvious it's not using any tokens for reasoning.

@jbuckmccready commented on GitHub (Jan 16, 2026): @nesl247 you can tell by how long it takes to respond, if you set it to high/xhigh reasoning and give it something that is complex to solve it will start outputting non-thinking tokens immediately which makes it pretty obvious it's not using any tokens for reasoning.
Author
Owner

@amat27 commented on GitHub (Jan 17, 2026):

I tried ask gpt5.2 high from github copilot "are you reasoning?", half a minute later it replies "yes". the issue feels more like reasoning result is not shown in ui to me. but i'm not sure this is true for all models.

@amat27 commented on GitHub (Jan 17, 2026): I tried ask gpt5.2 high from github copilot "are you reasoning?", half a minute later it replies "yes". the issue feels more like reasoning result is not shown in ui to me. but i'm not sure this is true for all models.
Author
Owner

@arnm commented on GitHub (Jan 17, 2026):

+1 - Also experiencing this with claude-opus-4.5 and gpt-5.2-codex via GitHub Copilot. The variants (low/medium/high) show in the UI but don't actually send the correct params to the API.

@arnm commented on GitHub (Jan 17, 2026): +1 - Also experiencing this with claude-opus-4.5 and gpt-5.2-codex via GitHub Copilot. The variants (low/medium/high) show in the UI but don't actually send the correct params to the API.
Author
Owner

@rekram1-node commented on GitHub (Jan 17, 2026):

Yeah we send the correct fields, they just stream reasoning in a different format than other openai compatible providers so the sdk doesnt parse it out. like i said, will fix

Hopefully today :)

@rekram1-node commented on GitHub (Jan 17, 2026): Yeah we send the correct fields, they just stream reasoning in a different format than other openai compatible providers so the sdk doesnt parse it out. like i said, will fix Hopefully today :)
Author
Owner

@rekram1-node commented on GitHub (Jan 19, 2026):

Responses reasoning fixed, next we need to do completions

@rekram1-node commented on GitHub (Jan 19, 2026): Responses reasoning fixed, next we need to do completions
Author
Owner

@hjnnjh commented on GitHub (Jan 21, 2026):

Has this issue been resolved?

@hjnnjh commented on GitHub (Jan 21, 2026): Has this issue been resolved?
Author
Owner

@MichaelYochpaz commented on GitHub (Jan 21, 2026):

I'm getting the same issue, but with GCP Vertex as a provider for Opus 4.5. Is anyone else experiencing that?

@MichaelYochpaz commented on GitHub (Jan 21, 2026): I'm getting the same issue, but with GCP Vertex as a provider for Opus 4.5. Is anyone else experiencing that?
Author
Owner

@rekram1-node commented on GitHub (Jan 21, 2026):

@MichaelYochpaz that would be separate and specific to gcp, same thing happens even w/ ctrl+t?

@rekram1-node commented on GitHub (Jan 21, 2026): @MichaelYochpaz that would be separate and specific to gcp, same thing happens even w/ ctrl+t?
Author
Owner

@MichaelYochpaz commented on GitHub (Jan 21, 2026):

@rekram1-node Thanks for the response. Yep, I tried switching modes, it didn't make a difference.

I asked here because that's the only related issue I could find, and the fact that no one else opened an issue about this made me doubt that maybe it's just me doing something wrong (I'm a new OpenCode user).

But regardless, I opened a new issue specifically for Vertex - https://github.com/anomalyco/opencode/issues/9894

@MichaelYochpaz commented on GitHub (Jan 21, 2026): @rekram1-node Thanks for the response. Yep, I tried switching modes, it didn't make a difference. I asked here because that's the only related issue I could find, and the fact that no one else opened an issue about this made me doubt that maybe it's just me doing something wrong (I'm a new OpenCode user). But regardless, I opened a new issue specifically for Vertex - https://github.com/anomalyco/opencode/issues/9894
Author
Owner

@jbuckmccready commented on GitHub (Jan 21, 2026):

Tested and reasoning is working with GPT-5.2 but unsure how to configure reasoning/thinking for Opus 4.5 through Github copilot.

@jbuckmccready commented on GitHub (Jan 21, 2026): Tested and reasoning is working with GPT-5.2 but unsure how to configure reasoning/thinking for Opus 4.5 through Github copilot.
Author
Owner

@rekram1-node commented on GitHub (Jan 21, 2026):

@jbuckmccready that's because completions hasn't been fixed yet, see here

@rekram1-node commented on GitHub (Jan 21, 2026): @jbuckmccready that's because completions hasn't been fixed yet, see [here](https://github.com/anomalyco/opencode/issues/6864#issuecomment-3769407861)
Author
Owner

@rekram1-node commented on GitHub (Jan 21, 2026):

@MichaelYochpaz mind opening a separate issue then?

@rekram1-node commented on GitHub (Jan 21, 2026): @MichaelYochpaz mind opening a separate issue then?
Author
Owner

@hjnnjh commented on GitHub (Jan 22, 2026):

@jbuckmccready that's because completions hasn't been fixed yet, see here

I've been using copilot-api for quite some time now. this branch maybe helpful for fixing this issue.

@hjnnjh commented on GitHub (Jan 22, 2026): > [@jbuckmccready](https://github.com/jbuckmccready) that's because completions hasn't been fixed yet, see [here](https://github.com/anomalyco/opencode/issues/6864#issuecomment-3769407861) I've been using `copilot-api` for quite some time now. this [branch](https://github.com/caozhiyuan/copilot-api/tree/all) maybe helpful for fixing this issue.
Author
Owner

@Coruscant11 commented on GitHub (Jan 22, 2026):

#10092 seems interesting

@Coruscant11 commented on GitHub (Jan 22, 2026): #10092 seems interesting
Author
Owner

@amat27 commented on GitHub (Jan 23, 2026):

looks like gemini 3 pro and opus still don't show thinking?

@amat27 commented on GitHub (Jan 23, 2026): looks like gemini 3 pro and opus still don't show thinking?
Author
Owner

@rekram1-node commented on GitHub (Jan 26, 2026):

anthropic models should all work in next release, now just need to merge in that linked pr to get the google models working, but openai and anthropic shoudl both work fine w/ reasoning (in next release)

@rekram1-node commented on GitHub (Jan 26, 2026): anthropic models should all work in next release, now just need to merge in that linked pr to get the google models working, but openai and anthropic shoudl both work fine w/ reasoning (in next release)
Author
Owner

@rekram1-node commented on GitHub (Jan 29, 2026):

Unfortunately the messages api wasn't ready for us, going to fix it on completions api instead for now, people were getting 429s due to this change^ had to revert

@rekram1-node commented on GitHub (Jan 29, 2026): Unfortunately the messages api wasn't ready for us, going to fix it on completions api instead for now, people were getting 429s due to this change^ had to revert
Author
Owner

@rekram1-node commented on GitHub (Jan 30, 2026):

Merging the pr tonight, also I learned that gemini models are expected not to have variants, so really it's just the anthropic models (cause openai ones work already)

@rekram1-node commented on GitHub (Jan 30, 2026): Merging the pr tonight, also I learned that gemini models are expected not to have variants, so really it's just the anthropic models (cause openai ones work already)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#4182