Constitution Slim — October 2026¶
What was done to cut the always-loaded instructions file, why, how it was verified, and how to undo it. Read this before editing
copilot-instructions.mdor restoring anything from the old version.
Why¶
Billing is per-token AI credits, so the size of what loads on every turn is the cost. Only ~/.copilot/copilot-instructions.md (the "constitution") is injected in full on every turn. Modules inject a name and description only; the reference file and the journal are never auto-loaded.
| State | Constitution | Credits for one trivial prompt |
|---|---|---|
| No custom instructions | 0 KB | ~22 |
| Before (8 Oct 2026) | 175.4 KB | ~78 |
| After slim | 57.6 KB | ~43 |
| After slim + 9 rarely-used MCP servers disabled by default | 57.6 KB | ~33 |
What changed¶
- Constitution condensed. Every rule keeps its trigger, action, bypass protocol and self-enforcement clause. Removed: origin stories, worked examples, incident timelines, long command recipes already held elsewhere.
- History preserved. The complete original is
~/.copilot/constitution-history-archive.md(local and private, covered by the daily backup). Do not publish it: it holds internal context. - Rules #16/#17 eased. A second-model reviewer is now required only for T2 decisions (root cause, architecture, brain edits, live/public/paid/auth/destructive work, unattended automation, decision-driving figures). Ordinary answers just label claims OBSERVED / INFERRED / UNKNOWN.
- MCP servers. Nine rarely-used servers are disabled by default (lab Graph + Azure servers, Gmail, Power BI, corp Azure, YouTube, M365 admin). Enable one for a single run with
copilot --enable-mcp-server <name>; re-enable permanently withcopilot mcp enable <name>. A running session cannot enable a server mid-session.
Why the logic stayed in the kernel¶
Two independent reviews before the build: a skeptic argued moving rules into on-demand modules fails because retrieval depends on the model noticing; a constructive reviewer agreed with conditions. Rule: anything that must fire from user intent (email, calendar, auth, outbound comms, deploy claims) stays in the always-loaded file. applyTo modules match file paths, not intent. Only history, examples and recipes moved.
Verification¶
- Backup of constitution, reference, journal, MCP config, modules, skills and scripts taken first, hash verified.
- Clause inventory of backticked commands/paths/names against the original, then an independent read-only audit found 12 gaps; all were restored.
- Credit A/B measured before and after (table above).
- Not done: a behavioural regression corpus in fresh sessions.
Rollback¶
- Constitution: copy
~/.copilot/copilot-instructions.pre-slim.bakover~/.copilot/copilot-instructions.md. - Full pre-change snapshot:
~/.copilot/backup-2026-10-08-pre-slim/. - MCP:
copilot mcp enable <name>for each server.
Known limits¶
- The "memories" block (cloud-side Copilot memory) also loads every session and is not editable from files; prune it in the Copilot Memory settings.
- The brain-status line is regenerated by the daily upkeep task; it should be checked after the first run on the new file.
Rule for the future¶
Growth here is a signal to run a clause-inventory trim, never to delete unreviewed text. New material defaults to a portal doc or module; only a conditional imperative that must fire unprompted belongs in the constitution, as trigger + action + bypass, never the story.