Skip to content

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.md or 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

  1. 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.
  2. 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.
  3. 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.
  4. 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 with copilot 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.bak over ~/.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.