docs/explanation/model-and-effort-selection.md (linked from CLAUDE.md, not from AGENTS.md) tells a Claude Code session which model and effort level to run at. It routes by what catches a mistake in the current phase rather than by skill name: routine wiki-status/wiki-lint at Sonnet default, judgment-heavy ingest/manage/query at Sonnet high, and stack development at Opus high across design, build and closing. It also covers /code-review effort and the Agent tool's model: override. It is deliberately Claude-Code-only.
Whether the other harnesses this repo supports (Codex CLI, GitHub Copilot CLI / VS Code / Desktop App, Mistral Vibe) should get equivalent guidance, and what it would mean for each, is the open question here.
Trigger fired (2026-10-13)
The trigger was "a non-Claude-Code harness session is actually doing meaningful work on this repo", and it has fired. The operator ingests through GitHub Copilot. Its Auto mode almost always picks GPT-6 Luna, GitHub's own lightweight, lowest-cost GPT-6 model, which GitHub classes with Claude Haiku under "fast & simple tasks". For ingest the operator switches to Sonnet by hand, at a much higher cost. Analysis and sources: #224 § B5. Hence prio/waiting → prio/planned.
What is now known about Copilot
Research on 2026-10-13, from official GitHub and Microsoft docs retrieved that day:
A custom agent can pin a model. VS Code and Copilot CLI both document model: in an .agent.md frontmatter.
VS Code accepts a single name or a prioritised list.
Copilot CLI accepts a string. Since CLI 1.0.83 it also accepts a list, tried in order, with model-policy: required.
Without the key, the agent inherits the picker or default.
Since CLI 1.0.88 a custom agent can also set reasoning-effort.
A prompt file (.prompt.md) takes model: too, but only in VS Code's local agent. Agent-host sessions no longer load prompt files.
A skill cannot. The documented SKILL.md schema has no model field. disable-model-invocation controls loading, not model choice.
Utility calls (titles, commit messages, intent detection) use their own models regardless.
Per-model context windows in Copilot are not published as a table. VS Code's language-model editor and the CLI's /context show the real value per installation.
Claude Sonnet 4.6 is retired in Copilot since 2026-09-01, except for individual annual Pro/Pro+ subscribers.
Auto re-routes during a conversation, not only at its start ("Routing occurs along natural cache boundaries and large drifts in conversation complexity").
Monthly plans are billed in AI Credits by token since 2026-06-01.
Claude Haiku 5.5 costs the same as GPT-6 Luna.
So for Copilot the lever exists, and it is a custom agent per heavy workflow rather than anything in the skill layer.
Open design questions
Measure first.#228 builds the tool and #240 runs the measurement. #240 measures fact recall of an ingest across Copilot's model classes:
GPT-6 Luna and Claude Haiku 5.5;
mid-tier models;
Claude Opus 5.5 as the upper reference;
effort levels at the cheap end;
Auto and HydraFusion.
All of it runs under a 50 USD cap. Its result decides whether guidance should say "Auto is fine for X, pin a model for Y" or something else. Writing guidance before that would be guessing.
Ship agents or document them? Shipping .github/agents/<workflow>.agent.md with model: would pin a model name. That name depends on the user's plan and on availability, which changes monthly. Documenting the mechanism (how-to) and leaving the name to the instance may be the honest form. A prioritised list (VS Code, and the CLI since 1.0.83) softens the problem.
Where would it be linked from? The other harnesses all read AGENTS.md natively, so a link there loads into all of them. A Copilot-only mechanism might belong in docs/how-to/ (reached by link, never loaded) rather than in an instruction.
Codex CLI and Mistral Vibe are still unchecked for a comparable per-agent or per-task model choice. Do not assume symmetry.
Phase/model pairing. The stack-dev/stack-build/stack-close split exists because a model switch inside a session is a bad idea. A harness that can pin a model per agent might express the phase/model pairing differently. Decide whether that matters for this repo at all, since stack development runs on Claude Code.
Acceptance criteria
A decision, even "not worth it, here's why", is recorded in this body before closing, based on #240's numbers. This follows the closing rule in instructions/dev/issue-tracking.md.
If guidance is written:
where it lives (instruction vs. docs/how-to/) is decided and stated;
#80: an eval runner that would automate such measurements.
## What
`docs/explanation/model-and-effort-selection.md` (linked from `CLAUDE.md`, not from `AGENTS.md`) tells a Claude Code session which model and effort level to run at. It routes by **what catches a mistake in the current phase** rather than by skill name: routine `wiki-status`/`wiki-lint` at Sonnet default, judgment-heavy ingest/manage/query at Sonnet high, and stack development at Opus high across design, build and closing. It also covers `/code-review` effort and the `Agent` tool's `model:` override. It is deliberately Claude-Code-only.
Whether the other harnesses this repo supports (Codex CLI, GitHub Copilot CLI / VS Code / Desktop App, Mistral Vibe) should get equivalent guidance, and what it would mean for each, is the open question here.
## Trigger fired (2026-10-13)
The trigger was "a non-Claude-Code harness session is actually doing meaningful work on this repo", and it has fired. The operator ingests through **GitHub Copilot**. Its Auto mode almost always picks **GPT-6 Luna**, GitHub's own lightweight, lowest-cost GPT-6 model, which GitHub classes with Claude Haiku under "fast & simple tasks". For ingest the operator switches to Sonnet by hand, at a much higher cost. Analysis and sources: #224 § B5. Hence `prio/waiting` → `prio/planned`.
## What is now known about Copilot
Research on 2026-10-13, from official GitHub and Microsoft docs retrieved that day:
- **A custom agent can pin a model.** VS Code and Copilot CLI both document `model:` in an `.agent.md` frontmatter.
- VS Code accepts a single name or a prioritised list.
- Copilot CLI accepts a string. Since CLI 1.0.83 it also accepts a list, tried in order, with `model-policy: required`.
- Without the key, the agent inherits the picker or default.
- Since CLI 1.0.88 a custom agent can also set `reasoning-effort`.
- **A prompt file** (`.prompt.md`) takes `model:` too, but only in VS Code's local agent. Agent-host sessions no longer load prompt files.
- **A skill cannot.** The documented `SKILL.md` schema has no `model` field. `disable-model-invocation` controls loading, not model choice.
- Utility calls (titles, commit messages, intent detection) use their own models regardless.
- Per-model context windows in Copilot are **not** published as a table. VS Code's language-model editor and the CLI's `/context` show the real value per installation.
- Claude Sonnet 4.6 is retired in Copilot since 2026-09-01, except for individual annual Pro/Pro+ subscribers.
Added on 2026-10-19/20 (#228):
- Auto re-routes **during** a conversation, not only at its start ("Routing occurs along natural cache boundaries and large drifts in conversation complexity").
- Monthly plans are billed in AI Credits by token since 2026-06-01.
- Claude Haiku 5.5 costs the same as GPT-6 Luna.
So for Copilot the lever exists, and it is a **custom agent per heavy workflow** rather than anything in the skill layer.
## Open design questions
- **Measure first.** #228 builds the tool and #240 runs the measurement. #240 measures fact recall of an ingest across Copilot's model classes:
- GPT-6 Luna and Claude Haiku 5.5;
- mid-tier models;
- Claude Opus 5.5 as the upper reference;
- effort levels at the cheap end;
- Auto and HydraFusion.
All of it runs under a 50 USD cap. Its result decides whether guidance should say "Auto is fine for X, pin a model for Y" or something else. Writing guidance before that would be guessing.
- **Ship agents or document them?** Shipping `.github/agents/<workflow>.agent.md` with `model:` would pin a model name. That name depends on the user's plan and on availability, which changes monthly. Documenting the mechanism (how-to) and leaving the name to the instance may be the honest form. A prioritised list (VS Code, and the CLI since 1.0.83) softens the problem.
- **Where would it be linked from?** The other harnesses all read `AGENTS.md` natively, so a link there loads into all of them. A Copilot-only mechanism might belong in `docs/how-to/` (reached by link, never loaded) rather than in an instruction.
- **Codex CLI and Mistral Vibe** are still unchecked for a comparable per-agent or per-task model choice. Do not assume symmetry.
- **Phase/model pairing.** The `stack-dev`/`stack-build`/`stack-close` split exists because a model switch inside a session is a bad idea. A harness that can pin a model per agent might express the phase/model pairing differently. Decide whether that matters for this repo at all, since stack development runs on Claude Code.
## Acceptance criteria
- A decision, even "not worth it, here's why", is recorded in this body before closing, based on #240's numbers. This follows the closing rule in [instructions/dev/issue-tracking.md](https://gitea.nehmer.net/torben/chemenu/src/branch/main/instructions/dev/issue-tracking.md).
- If guidance is written:
- where it lives (instruction vs. `docs/how-to/`) is decided and stated;
- `instructions verify` / `docs verify` are green;
- there is a `CHANGES.md` entry.
## Related
- #224: origin of the re-evaluation.
- #240: the measurement this issue waits on (`status/blocked`).
- #228: the tool #240 runs.
- #80: an eval runner that would automate such measurements.
Changelog (2026-10-13): Trigger fired – ingest through GitHub Copilot (Auto → GPT-6 Luna), see #224. Re-labelled prio/waiting → prio/planned. Body rewritten: file reference corrected to docs/explanation/model-and-effort-selection.md and its current rows; new section on what Copilot offers (custom agent model: in VS Code and CLI, prompt files local-only, no model in skills, no published context-window table); open questions now start with "measure first" (#228); the old "Trigger" section and the stack-close-only phase wording are gone.
**Changelog (2026-10-13):** Trigger fired – ingest through GitHub Copilot (Auto → GPT-6 Luna), see #224. Re-labelled `prio/waiting` → `prio/planned`. Body rewritten: file reference corrected to `docs/explanation/model-and-effort-selection.md` and its current rows; new section on what Copilot offers (custom agent `model:` in VS Code and CLI, prompt files local-only, no `model` in skills, no published context-window table); open questions now start with "measure first" (#228); the old "Trigger" section and the `stack-close`-only phase wording are gone.
Changelog (2026-10-20): Scope of #228 pulled through (model classes incl. Haiku 5.5 and Opus 5.5 as upper reference, effort, Auto/HydraFusion, 50 USD cap) in place of "Luna, Haiku 4.5 and Sonnet". Research facts added: Auto re-routes mid-conversation, AI-Credit billing, CLI agent model lists (1.0.83) and agent reasoning-effort (1.0.88). Desktop App named among the Copilot surfaces. No decision changed.
**Changelog (2026-10-20):** Scope of #228 pulled through (model classes incl. Haiku 5.5 and Opus 5.5 as upper reference, effort, Auto/HydraFusion, 50 USD cap) in place of "Luna, Haiku 4.5 and Sonnet". Research facts added: Auto re-routes mid-conversation, AI-Credit billing, CLI agent model lists (1.0.83) and agent `reasoning-effort` (1.0.88). Desktop App named among the Copilot surfaces. No decision changed.
Changelog (2026-10-21):#228 was split. #228 now builds the tool, and #240 runs the measurement and writes the report. This issue's blocker is now #240 (status/blocked stays). "Measure first", the acceptance criterion and Related were pulled through.
**Changelog (2026-10-21):** #228 was split. #228 now builds the tool, and #240 runs the measurement and writes the report. This issue's blocker is now #240 (`status/blocked` stays). "Measure first", the acceptance criterion and Related were pulled through.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What
docs/explanation/model-and-effort-selection.md(linked fromCLAUDE.md, not fromAGENTS.md) tells a Claude Code session which model and effort level to run at. It routes by what catches a mistake in the current phase rather than by skill name: routinewiki-status/wiki-lintat Sonnet default, judgment-heavy ingest/manage/query at Sonnet high, and stack development at Opus high across design, build and closing. It also covers/code-revieweffort and theAgenttool'smodel:override. It is deliberately Claude-Code-only.Whether the other harnesses this repo supports (Codex CLI, GitHub Copilot CLI / VS Code / Desktop App, Mistral Vibe) should get equivalent guidance, and what it would mean for each, is the open question here.
Trigger fired (2026-10-13)
The trigger was "a non-Claude-Code harness session is actually doing meaningful work on this repo", and it has fired. The operator ingests through GitHub Copilot. Its Auto mode almost always picks GPT-6 Luna, GitHub's own lightweight, lowest-cost GPT-6 model, which GitHub classes with Claude Haiku under "fast & simple tasks". For ingest the operator switches to Sonnet by hand, at a much higher cost. Analysis and sources: #224 § B5. Hence
prio/waiting→prio/planned.What is now known about Copilot
Research on 2026-10-13, from official GitHub and Microsoft docs retrieved that day:
model:in an.agent.mdfrontmatter.model-policy: required.reasoning-effort..prompt.md) takesmodel:too, but only in VS Code's local agent. Agent-host sessions no longer load prompt files.SKILL.mdschema has nomodelfield.disable-model-invocationcontrols loading, not model choice./contextshow the real value per installation.Added on 2026-10-19/20 (#228):
So for Copilot the lever exists, and it is a custom agent per heavy workflow rather than anything in the skill layer.
Open design questions
Measure first. #228 builds the tool and #240 runs the measurement. #240 measures fact recall of an ingest across Copilot's model classes:
All of it runs under a 50 USD cap. Its result decides whether guidance should say "Auto is fine for X, pin a model for Y" or something else. Writing guidance before that would be guessing.
Ship agents or document them? Shipping
.github/agents/<workflow>.agent.mdwithmodel:would pin a model name. That name depends on the user's plan and on availability, which changes monthly. Documenting the mechanism (how-to) and leaving the name to the instance may be the honest form. A prioritised list (VS Code, and the CLI since 1.0.83) softens the problem.Where would it be linked from? The other harnesses all read
AGENTS.mdnatively, so a link there loads into all of them. A Copilot-only mechanism might belong indocs/how-to/(reached by link, never loaded) rather than in an instruction.Codex CLI and Mistral Vibe are still unchecked for a comparable per-agent or per-task model choice. Do not assume symmetry.
Phase/model pairing. The
stack-dev/stack-build/stack-closesplit exists because a model switch inside a session is a bad idea. A harness that can pin a model per agent might express the phase/model pairing differently. Decide whether that matters for this repo at all, since stack development runs on Claude Code.Acceptance criteria
docs/how-to/) is decided and stated;instructions verify/docs verifyare green;CHANGES.mdentry.Related
status/blocked).Changelog (2026-10-13): Trigger fired – ingest through GitHub Copilot (Auto → GPT-6 Luna), see #224. Re-labelled
prio/waiting→prio/planned. Body rewritten: file reference corrected todocs/explanation/model-and-effort-selection.mdand its current rows; new section on what Copilot offers (custom agentmodel:in VS Code and CLI, prompt files local-only, nomodelin skills, no published context-window table); open questions now start with "measure first" (#228); the old "Trigger" section and thestack-close-only phase wording are gone.Changelog (2026-10-20): Scope of #228 pulled through (model classes incl. Haiku 5.5 and Opus 5.5 as upper reference, effort, Auto/HydraFusion, 50 USD cap) in place of "Luna, Haiku 4.5 and Sonnet". Research facts added: Auto re-routes mid-conversation, AI-Credit billing, CLI agent model lists (1.0.83) and agent
reasoning-effort(1.0.88). Desktop App named among the Copilot surfaces. No decision changed.Changelog (2026-10-21): #228 was split. #228 now builds the tool, and #240 runs the measurement and writes the report. This issue's blocker is now #240 (
status/blockedstays). "Measure first", the acceptance criterion and Related were pulled through.