Skip to content

GitHub Copilot Free/Student plans (Auto-only) show no models: add github-copilot/auto #34644

Open

Description

@TavoMtz

Description

After successfully authenticating OpenCode with my GitHub Copilot subscription via OAuth (/connect → GitHub Copilot → device login), the github-copilot provider does not appear anywhere in the model selector, and is not recognized at all when queried directly.

My account is on the GitHub Copilot Student plan. As of June 24, 2026, GitHub Education states that Copilot Free and Student plans now use "auto model selection" as the default and only model selection experience — manual model picking is no longer exposed for these plans (see GitHub Community Discussion #189268). I suspect this is why OpenCode can't populate a model list for this provider: it likely expects the Copilot API to return a list of individually selectable models, which Student/Free accounts no longer provide.

Expected behavior

GitHub Copilot should appear as a connected provider with at least one selectable model (e.g. an "auto" model entry), consistent with how Student/Free plans now operate via GitHub's auto model selection, since the OAuth credential is valid and stored correctly.

Actual behavior

The provider is completely absent from the model catalog despite a valid, stored OAuth credential. opencode models <provider> returns "Provider not found," suggesting OpenCode silently drops the provider entirely when the Copilot API doesn't return a standard model list (likely the case for Auto-only plans), rather than falling back to a generic/auto model entry.

Environment

  • OpenCode version: 1.17.11 (installed via npm, Windows)

  • GitHub Copilot plan: Copilot Student (Auto-only mode, as of June 2026 policy change)

  • Auth method: OAuth device login (GitHub Copilot oauth — confirmed present in auth list)

  • opencode auth list output:

    Credentials ~/.local/share/opencode/auth.json
    • GitHub Copilot oauth
    • DeepSeek api
    2 credentials

  • opencode models github-copilot output:

    Error: Provider not found: github-copilot

Additional context

This started after GitHub rolled out the policy change removing manual model selection for Free/Student Copilot plans (effective June 24, 2026). It's possible this previously worked for Student accounts before that change, since manual model selection used to be available. Happy to provide additional logs/debug output if helpful.

Plugins

None

OpenCode version

1.17.11

Steps to reproduce

  1. Authenticate with a GitHub Copilot Student plan account via opencode → /connect → GitHub Copilot → device login flow.
  2. Confirm the credential is stored: opencode auth list → shows GitHub Copilot oauth correctly.
  3. Open the model selector in the TUI ("Select model") → GitHub Copilot does not appear in the list at all (only OpenCode Zen / DeepSeek providers show).
  4. Run opencode models --refresh → output lists only opencode/* and deepseek/* models, nothing from github-copilot.
  5. Run opencode models github-copilot directly → returns: Error: Provider not found: github-copilot

Screenshot and/or share link

Image

Operating System

Windows 11

Terminal

Warp

Activity

  1. github-actions commented on Jun 30, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

  2. LeandroPacsiM commented on Aug 22, 2026

    @LeandroPacsiM

    Buenas dias, el problema sigue vigente a dia de hoy? o encontraron alguna solucion? tengo el mismo problema, antes si se podia sincronizar, gracias.

  3. TavoMtz commented on Aug 22, 2026

    @TavoMtz
    Author
  4. erfansn commented on Aug 29, 2026

    @erfansn

    ++

  5. mvcpacheco commented on Sep 25, 2026

    @mvcpacheco

    Root cause is tracked in #42083 (model_picker_enabled: false filters the whole catalog), and the auto-only policy behind it is confirmed in community discussion #189268. Adding three data points from stable 2.0.16, plus a second problem I don't think is accounted for yet.

    Still present on 2.0.16 (npm @opencode/cli@2.0.16, Windows 11 build 26200). Above is on 1.17.11, so this survives into the current release.

    The log contrast. The failure mode changes shape after re-auth. Before opencode auth login, retried loudly on every startup:

    level=WARN message="failed to sync GitHub Copilot models"
    cause="Error: Failed to fetch Copilot models: 401"
    

    After a successful login:

    level=INFO message="credential created" integrationID=github-copilot type=oauth
    

    …and then nothing: no failure line, no success line. The one actionable error gets replaced by silence, which is worse than either a working provider or a persistent failure.

    The stored credential doesn't authenticate. Despite the "Connected" result and the credential created log, the token fails the standard exchange:

    GET api.github.com/copilot_internal/v2/token
    → 401 {"message": "Bad credentials"}
    

    And a PAT with copilot scope is refused by the models endpoint outright (cf. #44113):

    → 400 "Personal Access Tokens are not supported for this endpoint"
    

    So the plan restriction looks like a second layer on top of a credential that doesn't work (worth separating, since fixing the picker filter alone wouldn't make this account functional).

    Provider-specific, not a broken catalog: after restart, opencode models → 492 models across opencode, opencode-go, openrouter; github-copilot absent.

    Ask: when a provider authenticates but yields an empty catalog (or when the credential it just stored fails to authenticate), log something. Right now "authenticated, no models", "bad credential", and "provider broken" are indistinguishable from the outside, which is likely why this has accumulated a dozen near-duplicates. #46891 makes a related point about entitled-looking-but-empty connections.

  6. apoorvdarshan commented on Oct 2, 2026

    @apoorvdarshan

    Also reproducing this on OpenCode v2.0.22 on macOS with a Copilot educational account. OAuth connects successfully, but no Copilot models appear in /models or opencode models. Reconnecting, reloading configuration, and restarting the background service did not help.

    We checked the API response using the active connection:

    • Copilot Chat access is enabled.
    • The Copilot /models endpoint returns HTTP 200 with 50 models.
    • All 50 have model_picker_enabled: false, including some whose policy state is enabled.
    • The installed OpenCode integration maps model_picker_enabled to the model's enabled state, leaving no selectable Copilot models.

    Could OpenCode support a single GitHub Copilot — Auto entry for Student accounts restricted to Auto selection, using GitHub's supported Auto routing and respecting the account's plan restrictions? This would let Student users use their connected account without exposing individual models that their plan does not allow them to select.

    GitHub documents Auto-only model access for Free/Student plans: https://docs.github.com/en/copilot/get-started/plans

    The Copilot SDK also documents model: "auto"; could that provide a supported integration path? https://docs.github.com/en/copilot/how-tos/copilot-sdk/features/session-persistence

    If Auto routing cannot currently be supported through OpenCode's provider integration, an explicit explanation in the UI would help instead of a successful connection followed by an empty model picker.

  7. rekram1-node commented on Oct 6, 2026

    @rekram1-node
    Contributor

    yeah we will add the auto

  8. thdxr commented on Oct 11, 2026

    @thdxr
    Member

    Thanks for the report! OpenCode 2.0 is now out and development is focused on V2, so we're closing issues filed against OpenCode 1. Please upgrade (opencode upgrade --major, details: https://anoma.ly/notes/opencode-2-0), and if this is still relevant on 2.0, reopen this issue or open a new one with your 2.0 version.

    — from 𝕺𝖕𝖊𝖓𝕮𝖔𝖉𝖊

  9. brandyballoon commented on Oct 13, 2026

    @brandyballoon

    v2.0.28 still has this issue. Provider connection succeeds but there's no GitHub Copilot section in the models list. I'm on the student plan which shows as pro when using the Copilot plugin in Jetbrains CLion in case that helps - everything works but the only model available is "Auto".

    Image Image
  10. changed the title [-]GitHub Copilot provider not registered/found for Copilot Student plan (Auto-only mode)[/-] [+]GitHub Copilot Free/Student plans (Auto-only) show no models: add github-copilot/auto[/+] on Oct 17, 2026
  11. opencode-agent commented on Oct 17, 2026

    @opencode-agent
    Contributor

    This is the tracking issue for GitHub Copilot Free and Student plans showing no models.

    Since GitHub's June 24 change, Free and Student plans only allow Auto model selection. Copilot's /models returns every model with model_picker_enabled: false, OpenCode maps that to disabled, and the provider ends up with zero models (Provider not found: github-copilot on V1, an empty Copilot section in /models on V2). The fix is a github-copilot/auto model, in progress in #55960.

    Open reports closed as duplicates of this issue:

    Earlier reports of the same problem that were already closed:

  12. EngineerAtaberk commented on Oct 21, 2026

    @EngineerAtaberk

    Reproduced on v2.1.2 (latest channel), Windows 10.0.19045, desktop app (win32 x64).

    GET https://api.githubcopilot.com/models with the stored OAuth token returns 46–53 models depending on Copilot-Integration-Id; every model has model_picker_enabled: false, while several have policy.state: "enabled" (gpt-4.1, gpt-4o, gpt-4o-mini, kimi-k3-base, kimi-k3-copilot, mai-code-*, claude-haiku-4.5, gpt-5.6-luna, gpt-6-luna, gpt-5.4-mini-free-auto). OpenCode therefore lists zero github-copilot models, and any explicit reference fails with Model unavailable: github-copilot/<model>.

    Extra data points that may help with the auto model implementation:

    • /copilot_internal/user returns chat_enabled: true, plan individual, access_type_sku: free_limited_copilot, and premium_interactions entitlement 0 (quota snapshots: chat 200/200, premium_interactions 0).
    • /copilot_internal/v2/token returns 403 for this account's token, so there is no session-token exchange on Copilot Free.
    • Direct API calls with the stored OAuth token: gpt-4.1, gpt-4o, gpt-4o-mini via /chat/completions work, including tool calls. gpt-5.6-luna and claude-haiku-4.5 return model_not_supported (plan gate, not an OpenCode bug).
    • The /models response also includes non-chat models (copilot-search-*, exec-agent-*, text-embedding-*, gpt-3.5-turbo*, gpt-4*) that would need filtering out of an auto list.
    • Workaround verified on 2.1.2: a custom openai-compatible provider with baseURL: https://api.githubcopilot.com and explicitly declared models (gpt-4.1, gpt-4o, gpt-4o-mini), plus Copilot-Integration-Id, Editor-Version, Openai-Intent, and X-GitHub-Api-Version headers, works end-to-end (chat and tool calls).

    Following #55960 — thanks for working on this.

  13. thdhyan commented on Oct 21, 2026

    @thdhyan

    Adding v2 data to this issue, since it is the canonical tracker for the Free/Student (auto-only) case.

    Reproduced on v2. This still happens on 2.0.27 and 2.1.2 (current), not just on the 1.17.11 build in the original report. The v1 code filtered the catalog by pickerEnabled; v2 maps the flag onto Model.Info.enabled instead, in packages/core/src/github-copilot/models.ts:

    enabled: remote.model_picker_enabled,

    So on v2 the models are fetched and registered successfully and then every one of them is hidden — which is why there is no failed to sync GitHub Copilot models warning in the server log.

    Which models those accounts can actually call. With the stored token, /chat/completions answers 200 for the legacy chat models and model_not_supported for everything Copilot meters. On my account (42 models in /models, 22 usable after the existing usable() filter):

    Answers directly with the OAuth token Needs the /auto session token
    gpt-4o, gpt-4o-mini, gpt-4.1, gpt-3.5-turbo, gpt-4-o-preview, gpt-4o-2024-*, gpt-4.1-2025-04-14, copilot-search-a/b gpt-4, gpt-4-0613, gpt-41-copilot, claude-haiku-4.5, kimi-k3, gpt-5.3-codex, gpt-5.6-luna, gpt-5.6-luna-utility, gpt-6-luna, mai-code-1.1-flash

    The split follows the /models metadata: the metered ones (billing.token_prices.batch_size > 0) and the ones that only advertise /responses are served through the auto route.

    POST /auto verified on a real Free/edu account, for the record: POST /auto with X-GitHub-Api-Version: 2026-08-01 returns { session_token, selected_model, expires_at } (selected_model.id was gpt-5.6-luna, whose billing.restricted_to includes free/edu), and that model then answers /responses with the Copilot-Session-Token header. The same model called directly with the OAuth token answers model_not_supported.

    Other fields in /models that may help with the auto model: is_chat_default (gpt-4.1 here), is_chat_fallback (gpt-5.3-codex here) and billing.auto_discount on 17 of the models.

    PRs

    Both halves are needed for Free/Student accounts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions