Skip to content

fix: stop shipping model:/tools: pins to Copilot and Codex installs - #62

Merged
miguelcolmenares merged 1 commit into
mainfrom
fix/copilot-drop-model-tools-pins
Aug 20, 2026
Merged

fix: stop shipping model:/tools: pins to Copilot and Codex installs#62
miguelcolmenares merged 1 commit into
mainfrom
fix/copilot-drop-model-tools-pins

Conversation

@miguelcolmenares

Copy link
Copy Markdown
Member

Summary

  • Copilot/Codex installs no longer ship the model: display-string pin or tools: allowlist in prompt frontmatter, nor the body's > **Model:** note documenting them.
  • Claude Code's install path is unaffected: it already strips tools: and reduces model: to a single-word alias, and it reads the untouched shared template directly.

Motivation

Real usage reports: a Copilot prompt with a scoped tools: allowlist plus a hardcoded model: display-string pin has left the whole Copilot Chat session wedged — both the tools picker and the model picker stuck disabled, requiring the user to manually re-enable tools/MCP, re-pick a model, and sometimes reload the window. That's a much worse failure mode than the documented "an unavailable tool is just ignored" behavior, and there's no way to reproduce/test this locally short of shipping a release and hitting it live in VS Code.

Changes Made

  • Added stripModelAndToolsPins transform (src/transforms/index.ts) that drops model:, tools:, and the > **Model:** body note from a prompt's frontmatter/body.
  • Wired the transform into the git-based (Copilot/Codex) install path via transformContent (src/installers/git-based.ts). agent: and description: still ship, since neither is implicated.
  • Updated/added tests (src/cli.test.js) covering: the Copilot install strips both pins and the body note while preserving agent:/description:, and the shared template source still carries model:/tools: so Claude's derivation is unaffected.

Type of Change

  • 🐛 Bug fix

Testing

  • Unit tests added/updated
  • npm run check (format, markdownlint, prompt validation, typecheck, build, lint, test) passes clean — 87/87 tests.

Reports from real usage: running a Copilot prompt with a scoped
`tools:` allowlist and a hardcoded `model:` display-string pin has left
the whole Copilot Chat session wedged — tools and the model picker
both stuck disabled, requiring the user to manually re-enable tools
and MCP, re-pick a model, and sometimes reload the window. That's a
much worse failure mode than the documented "an unavailable tool is
just ignored" behavior, and there's no way to test this locally short
of shipping a release and reproducing it live in VS Code.

Claude Code has shown none of this: its install already strips
`tools:` entirely and reduces `model:` to a single-word alias
(transformFrontmatterForClaude), so it was never exposed to either
pin in the form Copilot receives it.

Add a matching transform for the git-based (Copilot/Codex) install
path — stripModelAndToolsPins — that drops `model:`, `tools:`, and the
body's `> **Model:**` note before writing to `.github/prompts/`. The
shared template source is untouched, so Claude's derivation is
unaffected; only what actually reaches Copilot/Codex changes. `agent:`
and `description:` still ship, since neither is implicated.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@miguelcolmenares
miguelcolmenares merged commit 85cff91 into main Aug 20, 2026
8 of 9 checks passed
@miguelcolmenares
miguelcolmenares deleted the fix/copilot-drop-model-tools-pins branch August 20, 2026 03:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants