Repository navigation
Release for the CCC-HQ batch (#246), finished auto-routing (#247) and the Hermes CCC batch (#245). Bumps the pinned plugin version so claude plugin update picks these up.
Security
- Status line: the status line no longer
evals Claude Code's JSON. Fields are parsed positionally and numbers coerced, so a quote,$()or backtick in a directory, model or agent name can no longer run shell code (CC-2110, H1). - Elicitation hooks: the Elicitation and ElicitationResult hooks log only the documented identifiers (MCP server, mode, elicitation id, action) and never the message, URL, schema or submitted content, which can carry credentials (CC-2115, H2).
Changed
- Load on demand: 32 skills stay model-visible and 52 load on demand (
disable-model-invocation), cutting the skill listing from about 22.6k to 7.3k characters. The router offers hidden skills as a menu the user types, andnpm run measure:listing/check:listingguard the budget (CC-2112). - Network and telemetry: telemetry is opt-in and off by default.
CCC_OFFLINE=1blocks every outbound call, and the CI ticker'sghlookup runs only withCCC_CI_TICKER=1. All outbound calls go throughlib/network-mode.js(CC-2111). - Defaults: the cost ceiling is off unless set, and when set it denies with a reason. 72
model:and 84effort:frontmatter pins were removed so skills inherit the session's model (CC-2115). - Hosted MCP server:
posthog-nodeis removed./v1/eventsvalidates, rate-limits, acknowledges and discards events, with/metricscounters (CC-2119). - Docs: README, BIBLE, CHEATSHEET and mintlify use generated counts.
check:paritykeeps 105+ files consistent. There is a plugin icon, and the README has example prompts, privacy and support (CC-2113, CC-2117).
Added
- Directory mirror: a publisher builds the
cc-commanderdirectory mirror, triggered by a tag. It stays dormant until the mirror repo and secret exist (CC-2114). - Auto-routing:
route-hints.jsontakes an integerprioritythat breaks score ties (higher first, default 0; then skills before agents).npm run build:routesnow fails, naming the route, when a routable skill or agent has no trigger, pattern, path or "Use when … says" phrase, so a route that can never fire is caught at build time (CC-2060). - Auto-routing: the routing mode can be saved per lane:
/ccc-settings→ Auto-routing writesrouteMode(auto,suggestoroff) to<config dir>/commander/config.json, and both the prompt router and the what-next menu read it. A validCCC_ROUTE_MODEstill wins; unknown values fall back toauto(CC-2061). - Auto-routing:
npm run eval:routes(scripts/route-eval.js) runs the routing eval as one command and reports recall, false triggers, wrong-route fires, wrong auto-runs, explicit requests that no longer auto-run and routes that never fire, with--jsonand--fixtures <file>. A route with labelled prompts that fires on none of them now fails, even when aggregate recall is still 90% or higher.npm run test:ciruns the registry freshness check, the eval and the routing tests (CC-2063). - Auto-routing: the what-next menu after a skill run has a per-session cooldown: at most one menu every 10 minutes (
CCC_ROUTE_NEXT_COOLDOWN_MIN,0offers after every run). A skill run inside the cooldown is dropped, not saved for later, and a run that ends on its own question does not start the cooldown (CC-2062). - Codex:
docs/reference/dual-host-hooks.mddocuments the hook contract shared by Claude Code and Codex (command form, plugin root, events, output fields, host detection, menus) and the one-time/hookstrust step Codex users need before hooks fire; linked from the README and the Codex adapter README.commander/tests/dual-host-hooks.test.jschecks that both hosts register the routing hook on UserPromptSubmit and Stop, that the mirrored hook files are byte-identical and that host detection holds (CC-2064). - Broadcast:
/ccc-broadcastcan send every signal to one ops channel (opsChannel). Incidents stay immediate,lib/broadcast-route.jsadds dedup keys and message-id receipts, and the router refuses credential fields (CC-1598). - Specialists: a read-only specialist resolver maps a name to its canonical agent or persona profile with provenance. It is off unless
CCC_SPECIALIST_RESOLVER=1(CC-1998). - Docs:
docs/reports/2026-10-25-ccc-best-practice-audit.mdis a cited best-practice audit of the CCC-HQ findings (FLT-187).
Fixed
- Command names: the suggest-ticker nudge and the BIBLE workflow table no longer name nonexistent commands (
/ccc-debug,/ccc-verify,/ccc-spike*). A test fails when hook text names a missing command (CC-296). - MCP pins: bundled MCP server versions are pinned (CC-2106).
Also in this release (not yet in CHANGELOG.md; flagged by the release review, docs fix to follow)
- Voice injector: now opt-in with
CCC_VOICE=1(CC-2112). - Status line and session end: the "Powered by" partner lines are removed (CC-2111).
- Lanes: the status line and doctor accept lane aliases and
CCC_CONFIG_DIR(CC-2115). - Wording: the SessionStart nudge says "Commander Method" instead of "Fable Method" (CC-2117).
Release gate: independent Fable review of 3d1f1a6 returned VERDICT: PASS (session c668cb87-fd64-4722-83d1-4f57a9a1f9c7).