ArmorClaude LogoArmorClaude
Getting Started

Plan Mode

ArmorClaude integrates with Claude Code's built-in plan mode for user-approved intent plans

View Source

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

  1. Press Shift+Tab twice in Claude Code. You will see "plan mode on" at the bottom
  2. Type your prompt (e.g. "Add a summary file for /etc")
  3. Claude researches (read-only), then writes a markdown plan
  4. The plan includes a fenced JSON block with the intent schema
  5. You approve the plan
  6. Claude calls register_intent_plan with the approved plan
  7. 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

PathWhenHow plan is captured
MCP tool (default)Regular promptsClaude calls register_intent_plan as its first tool
Plan modeShift+Tab x2, then approveArmorClaude 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.

On this page