Getting Started
Plan Mode
ArmorClaude integrates with Claude Code's built-in plan mode for user-approved intent plans
Plan Mode Integration
ArmorClaude works with Claude Code's built-in plan mode, where Claude writes a plan for your approval before executing.
How to Use
- Press Shift+Tab twice in Claude Code. You will see "plan mode on" at the bottom
- Type your prompt (e.g. "Add a summary file for /etc")
- Claude researches (read-only), then writes a markdown plan
- The plan includes a fenced JSON block with the intent schema
- You approve the plan
- Claude calls
register_intent_planwith the approved plan - ArmorClaude enforces: every tool call must match the approved plan
What the Plan Looks Like
Claude's plan file will contain a JSON block at the end:
{
"goal": "Create etc-notes.md with a one-line summary of /etc",
"steps": [
{
"action": "Write",
"description": "Create the summary file",
"metadata": {
"inputs": {
"file_path": "/tmp/demo/etc-notes.md",
"content": "/etc contains system-wide configuration files.\n"
}
}
},
{
"action": "Read",
"description": "Verify the file was written",
"metadata": {
"inputs": { "file_path": "/tmp/demo/etc-notes.md" }
}
}
]
}Two Plan Paths, Same Enforcement
| Path | When | How plan is captured |
|---|---|---|
| MCP tool (default) | Regular prompts | Claude calls register_intent_plan as its first tool |
| Plan mode | Shift+Tab x2, then approve | ArmorClaude reads the JSON block from the plan file |
Both paths produce the same normalized plan and the same enforcement. The UserPromptSubmit directive instructs Claude to include the JSON block in both cases.
In practice, Claude often uses both paths: it writes the JSON block in the plan file AND calls register_intent_plan after approval. The MCP path wins (consumed first), and the plan file path is a backup.