github / github/copilot-cli

ACP: expose contextTier as a session config option (parity with interactive /model picker)

Open
#4,275 3 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

area:configuration area:non-interactive
Dominant language
Shell
Stars
11.2k
Forks
1.9k
Avg merge
14h 16m
Merged PRs (30d)
6

Description

Describe the feature or problem you'd like to solve

The interactive CLI lets you change the context window tier mid-session (via the /model context tier picker), but the ACP server does not expose contextTier as a session config option. ACP clients can only set the tier at spawn time with --context <tier>, and have no way to discover or change it once the session is running.

Proposed solution

Expose the context tier over ACP with the same shape already used for reasoning_effort:

  1. Include a contextTier entry in the configOptions array returned by session/new (and session/load), of type: "select", with the eligible values for the current model (default, long_context) and the current value.
  2. Accept session/set_config_option with configId: "contextTier" and apply it to the live session, exactly as the /model picker does interactively.
  3. Only advertise the option for tiered-pricing models, mirroring the interactive behaviour ("context tier picker appears for eligible models").

This closes a parity gap rather than adding new functionality: the capability already exists in the runtime and is reachable from the interactive UI and from settings.json; it is just not reachable through ACP.

Issue #1994 ("Allow reasoning effort discovery and setting via ACP") is the direct precedent — reasoning_effort is now a first-class ACP config option, and contextTier is the remaining sibling setting that isn't.

Example prompts or workflows
  1. An ACP client (Zed, or any ACP editor integration) shows a "Context Size" picker next to the model and reasoning-effort pickers, populated from session/new, instead of having to hardcode the tier list per CLI version.
  2. A user on Claude Opus hits a large refactor mid-conversation and switches from default to long_context without losing session state — today the client must kill and respawn copilot --acp --context long_context and resume, or the control is simply hidden.
  3. A client drops back from long_context to default after the large task is done, to avoid the surcharge for the rest of the conversation.
  4. A client reads the current tier from session/load when reconnecting to an existing session, so the UI reflects reality instead of guessing.
Additional context

Reproduced against GitHub Copilot CLI 1.0.75.

The interactive CLI supports hot changes — from copilot help config:

contextTier: context window tier for tiered-pricing models (e.g., "default" or "long_context").
  - Can also be set with --context flag (overrides persisted setting)
  - Can be changed with /model command (context tier picker appears for eligible models)

ACP does not. Minimal probe over copilot --acp (initialize → session/newsession/set_config_option):

configOptions ids: ["mode","model","reasoning_effort","allow_all"]
contextTier -> {"code":-32602,"message":"Unknown config option 'contextTier'."}
context     -> {"code":-32602,"message":"Unknown config option 'context'."}
contextSize -> {"code":-32602,"message":"Unknown config option 'contextSize'."}

So reasoning_effort is exposed but contextTier is not, even though both are per-session model settings adjustable from the interactive /model flow.

Current workaround and why it's poor. The tier can only be pinned at spawn time via --context <tier>. Changing it for a running conversation requires terminating the agent process and respawning it with a different flag, then reloading the session — an intrusive lifecycle operation for what is a per-request setting, and one that ACP clients cannot make feel like the interactive picker.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the existing reasoning_effort ACP config option as the precedent, then trace session/new and session/load advertisement and session/set_config_option handling. Compare those paths with the interactive /model picker and --context behavior. Done means eligible models expose the current contextTier and clients can change it during a live session without restarting.

Written by the indexing model from the issue text.

Assessment

Tech stack
shell
Domain
api, cli
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
65/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.