/exception
Signed gate-exception registry — replace ad-hoc --admin / --no-verify bypasses with an auditable, signed, expiring record (who · why · gate · scope · expiry). Create / list / check exceptions.
$ npx -y skills add avelikiy/great_cto --agent claude-codeShips with great-cto. Installing the plugin gets this command.
How it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/exception
Context preview
What this command does when you run it.
Signed gate-exception registry — replace ad-hoc --admin / --no-verify bypasses with an auditable, signed, expiring record (who · why · gate · scope · expiry). Create / list / check exceptions.
Command definition
exception.mddescription: "Signed gate-exception registry — replace ad-hoc --admin / --no-verify bypasses with an auditable, signed, expiring record (who · why · gate · scope · expiry). Create / list / check exceptions."
argument-hint: "create --gate <g> --reason \"<why>\" [--scope S] [--days N] [--risk low|medium|high] | list | check <gate>"
user-invocable: true
allowed-tools: Read, Bash
model: haiku
<!-- great_cto-managed -->
You are the great_cto `/exception` command — the **signed gate-exception registry** (NaCl-inspired governance). When a gate must be bypassed (merge over a red CI that's down for reasons unrelated to the code, ship with a known-tracked BLOCKED task, skip a check in an emergency), you do **not** reach for a silent `--admin` / `--no-verify`. You create a **signed exception**: a tamper-evident, expiring record of who allowed the bypass, why, for which gate, and for how long. Gates check this registry — a bypass is only sanctioned if a valid active exception covers it.
Store: `.great_cto/exceptions/EXC-*.json` (project-local, signed with sha256).
Step 1 — Parse the sub-command
SUB="${ARGUMENTS%% *}"- `create` → mint a new signed exception.
- `list` → show all exceptions (✓ valid / ✗ invalid+reason).
- `check` → is a gate covered right now? (exit 0 = covered, 1 = not).
Create a signed exception
Only create one when a bypass is genuinely justified, and keep the expiry **short** (default 30 days — prefer 7–14 for CI/infra issues). State the real reason and the evidence.
node scripts/lib/exceptions.mjs create \
--gate "gate:ship" \
--reason "GitHub Actions billing-locked; CI cannot run; verified locally (191/191)" \
--scope "great_cto repo · PR merge" \
--days 14 --risk medium
`--gate` accepts a specific gate (`gate:ship`, `gate:qa`, `ci`, `pre-push`, …) or `*` for a blanket emergency exception (use sparingly). The signature covers gate/scope/reason/expiry — editing any of them afterwards invalidates it.
List / audit
node scripts/lib/exceptions.mjs list # ✓/✗ per exception with expiry + invalid reasons
Review this in `/inbox` and before any release — expired or revoked exceptions should be remediated, not silently relied on.
Check coverage (used by gates)
node scripts/lib/exceptions.mjs check gate:ship # exit 0 (prints covering id) or 1
Strict-mode gates call this: if a gate would block but a valid signed exception covers it, the bypass is sanctioned **and logged** — otherwise the gate holds.
Revoking
To revoke before expiry, set `"status": "revoked"` in the JSON file (the signature stays valid but `verify` then reports it invalid). Never delete the file — keep the audit trail.
Notes
- An exception is a **deliberate, signed, expiring** override — not a way to make red things
green. The work it covers must still be tracked and remediated (see gap-closure waves).
- Prefer fixing the gate over excepting it. Exceptions are for *external* blockers (a
billing-locked CI, a third-party outage), not for shipping broken code.
Read more
description: "Signed gate-exception registry — replace ad-hoc --admin / --no-verify bypasses with an auditable, signed, expiring record (who · why · gate · scope · expiry). Create / list / check exceptions." argument-hint: "create --gate <g> --reason \"<why>\" [--scope S] [--days N] [--risk low|medium|high] | list | check <gate>" user-invocable: true allowed-tools: Read, Bash model: haiku
<!-- great_cto-managed -->
You are the great_cto `/exception` command — the **signed gate-exception registry** (NaCl-inspired governance). When a gate must be bypassed (merge over a red CI that's down for reasons unrelated to the code, ship with a known-tracked BLOCKED task, skip a check in an emergency), you do **not** reach for a silent `--admin` / `--no-verify`. You create a **signed exception**: a tamper-evident, expiring record of who allowed the bypass, why, for which gate, and for how long. Gates check this registry — a bypass is only sanctioned if a valid active exception covers it.
Store: `.great_cto/exceptions/EXC-*.json` (project-local, signed with sha256).
Step 1 — Parse the sub-command
SUB="${ARGUMENTS%% *}"- `create` → mint a new signed exception.
- `list` → show all exceptions (✓ valid / ✗ invalid+reason).
- `check` → is a gate covered right now? (exit 0 = covered, 1 = not).
Create a signed exception
Only create one when a bypass is genuinely justified, and keep the expiry **short** (default 30 days — prefer 7–14 for CI/infra issues). State the real reason and the evidence.
node scripts/lib/exceptions.mjs create \ --gate "gate:ship" \ --reason "GitHub Actions billing-locked; CI cannot run; verified locally (191/191)" \ --scope "great_cto repo · PR merge" \ --days 14 --risk medium
`--gate` accepts a specific gate (`gate:ship`, `gate:qa`, `ci`, `pre-push`, …) or `*` for a blanket emergency exception (use sparingly). The signature covers gate/scope/reason/expiry — editing any of them afterwards invalidates it.
List / audit
node scripts/lib/exceptions.mjs list # ✓/✗ per exception with expiry + invalid reasons
Review this in `/inbox` and before any release — expired or revoked exceptions should be remediated, not silently relied on.
Check coverage (used by gates)
node scripts/lib/exceptions.mjs check gate:ship # exit 0 (prints covering id) or 1
Strict-mode gates call this: if a gate would block but a valid signed exception covers it, the bypass is sanctioned **and logged** — otherwise the gate holds.
Revoking
To revoke before expiry, set `"status": "revoked"` in the JSON file (the signature stays valid but `verify` then reports it invalid). Never delete the file — keep the audit trail.
Notes
- An exception is a **deliberate, signed, expiring** override — not a way to make red things
green. The work it covers must still be tracked and remediated (see gap-closure waves).
- Prefer fixing the gate over excepting it. Exceptions are for *external* blockers (a
billing-locked CI, a third-party outage), not for shipping broken code.
Don't buy software. Get the work done. GreatCTO ships AI autopilots that run a whole business function — medical coding, legal docs, procurement, accounting, IT, tax — from intake to outcome. A qualified human signs only the judgment calls. Live connectors, built-in compliance.
Repo: avelikiy/great_cto
Other commands on great-cto.
- /aedt-bias-audit
HR-AI / AEDT bias audit. Invokes hr-ai-reviewer to assess NYC LL 144, EEOC, Illinois AIVIA, Colorado SB 205, EU AI Act Annex III applicability and produce TM-hrai with bias-audit pipeline requirements (4/5-rule, intersectional).
Open command - /agent-retire
Gracefully retire an LLM agent from the workforce. Archives prompt, removes from sync list, keeps verdicts for audit. Like firing a human — but reversible.
Open command - /agent-review
Performance review for an LLM agent (or all agents). Verdicts breakdown, cost analysis, top failure modes, prompt-tuning suggestions. Like a human '1:1' but for AI workforce.
Open command - /api-contract-review
API platform contract review. Invokes api-platform-reviewer to audit rate-limit design, OAuth scope hygiene, webhook signing, idempotency, Sunset/deprecation, pagination, error envelope, and versioning strategy. Critical before v1 GA.
Open command - /audit
Audit an existing codebase. Detects stack, finds gaps, creates tasks, generates PROJECT.md.
Open command - /board
Open the great_cto admin board at http://localhost:3141 (Kanban, cost, pipeline, inbox, memory). Starts it in background if not running.
Open command

