Claude Code Plan Mode not working
Troubleshoot Claude Code Plan Mode: use `/plan`, verify the active indicator, and diagnose when Shift+Tab is intercepted.
Put it into practice
What you will produce
A minimal reproduction and a verified diagnosis tied to the current Claude Code version and session settings.
- 01
Separate the failure stage
Record whether mode entry, plan quality, context retrieval, or permission handling fails.
Expected result: The diagnosis isolates one stage rather than blaming Plan Mode generally.
- 02
Establish a clean baseline
Reproduce with a small prompt in a fresh session and note version, project instructions, and permissions.
Expected result: The baseline controls for inherited context and stale state.
- 03
Change one variable at a time
Test the documented entry action, then context or settings separately; compare visible state and plan.
Expected result: Retries isolate entry, context, or configuration.
- 04
Verify before editing
Confirm planning state and inspect target files and checks before allowing implementation.
Expected result: The workflow does not silently proceed into edits.
Step-by-step diagnosis
Plan Mode never becomes active
Check: Identify whether you use Claude Code CLI or Desktop. In the CLI, `/plan` starts a plan for one prompt; `claude --permission-mode plan` starts a CLI session in plan mode.
Action: In the CLI, send `/plan <task>` or launch a fresh session with `claude --permission-mode plan`. In Desktop, select Plan mode in the permission-mode control. Confirm the status bar or selected mode before sharing a complex task.
Shift+Tab is ignored or inserts a tab
Check: Check that the CLI prompt has focus and that the status bar does not already show `⏸ plan mode on`. A terminal or multiplexer can capture the key.
Action: Use `/plan <task>` to bypass the keyboard path. If the slash command is not recognized, open the `/` command list and compare against the current commands reference before updating the CLI.
Claude edits files before you approve the plan
Check: Check for `⏸ plan mode on` and identify whether you approved the plan or changed to an execution permission mode. A text instruction that says 'plan first' is not the same as Plan Mode.
Action: Stop the run. Review `git status` and the diff, preserve pre-existing changes, then restart in Plan Mode. Do not accept a written promise as proof that the CLI mode is active.
Acceptance checks
- The diagnosis isolates one stage rather than blaming Plan Mode generally.
- Retries isolate entry, context, or configuration.
- The workflow does not silently proceed into edits.
Limits and trade-offs
Mode names and entry points may change. Do not infer current behavior from old screenshots or copied shortcut advice.
Official sources
Troubleshoot Plan Mode
Related guides
Claude Code Plan Mode: A Practical Guide
Claude Code Plan Mode lets you review and steer a task plan before any file is touched. Full guide: shortcut (Shift+Tab), activation, when to use it, and how to execute the plan.
Most people use Claude Code like a chat: describe the task, watch it execute. That works for small changes. For anything touching more than two files, there's a better path. If you are looking for the shortcut, press Shift+Tab to toggle Plan Mode. To turn it off, press Shift+Tab again or use /plan only for the prompt that needs planning. The dedicated Plan Mode troubleshooting guide covers the common terminal and version issues. Plan Mode. What Plan Mode does When you activate Plan Mode, Claude reads your codebase and produces a step by step execution plan but makes no changes. You see exactly what it intends to do before a single file is written. This gives you a checkpoint: approve the plan, redirect it, or catch a wrong assumption before it cascades into 15 wrong edits. How to activate Plan Mode the shortcut Two ways: Keyboard shortcut : press Shift+Tab…
Read the guide5 Claude Code Hooks I Use Daily
Claude Code hooks run shell commands on session start, file writes, and tool calls. Here are the 5 I use daily and how to configure them.
Most people discover Claude Code for the AI. They miss the hooks. Hooks are shell commands that execute automatically when something happens in your Claude Code session: a session starts, a tool runs, Claude stops. You define them in .claude/settings.json . They run silently in the background. Here are the 5 I use every day. What hooks look like The available events: SessionStart , UserPromptSubmit , PreToolUse , PostToolUse , Stop . Hook 1 Auto inject date on every prompt Event : UserPromptSubmit Claude doesn't have real time awareness. Every prompt gets the current date injected automatically. Useful for anything time sensitive: changelogs, deadlines, scheduling logic. Hook 2 Push notification when Claude stops Event : Stop Long tasks (refactors, test runs, analysis) can take 2–5 minutes. Without a notification I'd either stare at the screen or miss the result. This fires whenever Claude finishes a task, whether it succeeded or…
Read the guide