Skip to content

Copilot app: selecting a custom agent in the composer agent picker doesn't apply its model or reasoning-effort #5241

Open

Description

@RorroRojas3

Describe the bug

In the GitHub Copilot desktop app, choosing a custom agent in the composer's agent picker does not apply that agent's model or reasoning-effort frontmatter. The composer's model picker keeps the previously stored model and effort (the user default), and the session runs with those values instead of the agent's.

The same agent files work correctly in the Copilot CLI (copilot --agent <name>), so the runtime parses the frontmatter correctly. The app composer seems to send its own model and effort as explicit values, which win over the agent's. The 1.0.88 changelog says an explicit --reasoning-effort "still wins."

This happens with repository agents (.github/agents/*.agent.md) and plugin agents from an installed marketplace plugin.

Affected version

  • Copilot app runtime: 1.0.99-2
  • Copilot CLI: 1.0.103 (works correctly)
  • OS: Windows 11 x64

Steps to reproduce the behavior

  1. Set the user default to "model": "claude-opus-5.5" and "effortLevel": "medium" in ~/.copilot/settings.json, or choose them in the app's model picker.
  2. In a repository, add .github/agents/rust.agent.md:
    ---
    name: Rust
    description: Writes, refactors, debugs, and reviews idiomatic Rust.
    model: [Claude Sonnet 5.5 (copilot)]
    reasoning-effort: low
    tools: ["read", "search", "edit", "execute", "web"]
    ---
  3. Open the repository as a project in the Copilot app and start a new session.
  4. In the composer, open the agent picker and select Rust.
  5. The composer's model picker does not change. It still shows Claude Opus 5.5 / medium, and sending a prompt runs with those values instead of Claude Sonnet 5.5 / low.

Control (CLI, same agent file):

copilot -p "Reply with just OK." --agent Rust --allow-all-tools

The session events.jsonl shows "agentName":"Rust", "model":"claude-sonnet-5.5", and "reasoningEffort":"low", while selectedModel is claude-opus-5.5. The CLI applies the agent's frontmatter correctly.

Expected behavior

When an agent with model and/or reasoning-effort is selected in the composer's agent picker, the composer's model picker should switch to that agent's model (the first available entry, respecting model-policy) and reasoning effort, as copilot --agent does. The user can then still change them manually. If the user then switches to an agent without these fields, the composer should return to the user's default.

Additional context

  • The app logs (github-app.*.log) show the composer model picker using its stored effort (perf_span model_picker, "surface":"draft", "hasStoredEffort":true) when sessions are created for the repository. No agent-model resolution is logged.
  • Separate minor issue found while debugging: a model list with only a display name, such as model: [Claude Opus 5.5 (copilot)], produces Warning: Custom agent "go" specifies model "Claude Opus 5.5 (copilot)" which is not available; using "claude-opus-5.5" instead in the CLI. The 1.0.24 changelog says display names with a vendor suffix are accepted, and Claude Sonnet 5.5 (copilot) resolved without a warning.

Activity

  1. changed the title [-]Copilot app: selecting a custom agent ignores its frontmatter model and reasoning-effort (works in CLI)[/-] [+]Copilot app: selecting a custom agent in the composer agent picker doesn't apply its model or reasoning-effort[/+] on Oct 23, 2026
  2. added
    area:agentsSub-agents, fleet, autopilot, plan mode, background agents, and custom agents
    area:modelsModel selection, availability, switching, rate limits, and model-specific behavior
    on Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:agentsSub-agents, fleet, autopilot, plan mode, background agents, and custom agentsarea:modelsModel selection, availability, switching, rate limits, and model-specific behavior

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions