DeepSeek Harness Plan Mode: Plan First, Approve, Then Execute

The /plan command turns any session into a reviewable drafting round — the agent researches, proposes a plan card, and only touches files after you approve.

Last updated: 2026-09-12

In DeepSeek Harness, a normal request starts editing right away. Prefix it with /plan and the session flips into plan mode: an orange marker flags the request as review-before-implementation, the agent investigates and writes a plan instead of changing files, and a review card asks for your approval before any edit lands.

This guide follows a real run recorded in the dsh web UI — from typing /plan in a fresh session to the terminal decoder proving plan mode switched on and off — plus a second demo where an approved plan adds a store endpoint to a Golang service.

Plan mode, step by step

  1. 1

    Start from a normal session

    Open a new session in your workspace — the demo uses harbor-log in Standard mode with Workspace Write and DeepSeek-V4-Flash. Plan mode is a per-session switch, not a preset: you turn it on inside the conversation whenever a change is big enough to deserve a review first.

    DeepSeek Harness new session page with harbor-log workspace, Standard mode, Workspace Write and DeepSeek-V4-Flash before entering plan mode
    A clean session — the usual starting point before /plan.Watch at 36:30
  2. 2

    Type /plan in the composer

    Click into the message box and type a slash. The command menu pops up with plan — Enter or leave plan mode — highlighted. This is the same composer you use for every request, so nothing needs to be installed or configured first.

    DeepSeek Harness composer command menu showing plan — Enter or leave plan mode highlighted above the message box
    The command menu appears as soon as you type the slash.Watch at 36:32
  3. 3

    Describe the task after /plan, then send

    After /plan, write the task in plain language and pin down the constraints. The demo asks for a list command and a test, and explicitly forbids changing latest, implementing repo_health or touching secrets. The /plan prefix turns orange — that marker means this request must be reviewed before implementation. Pause on the complete request, then send.

    DeepSeek Harness composer with an orange /plan prefix and the full list-command request including do-not-touch constraints
    The complete brief: one orange /plan, clear deliverables, hard limits.Watch at 36:43
  4. 4

    The session enters plan mode

    Once sent, the session banner reads: plan · Plan mode on. Use /plan off to leave. The user message carries the task itself — not a stray /command — and the composer now shows an orange Plan pill you can click to leave plan mode at any time.

    DeepSeek Harness chat showing the Plan mode on banner with the /plan off hint above the sent task message
    Plan mode is on for this session — /plan off leaves it.Watch at 36:49
  5. 5

    The agent drafts the plan — no files edited

    In plan mode the agent reads the project, weighs design decisions in the open, and writes the plan. No Edit cards appear in this phase; the composer placeholder even changes to "describe your task to generate plan". When the plan is ready, the agent calls exit_plan_mode with it instead of starting to code.

    DeepSeek Harness chat with the agent weighing design decisions in plan mode before the exit_plan_mode call
    Reasoning is on the record; files are not touched yet.Watch at 36:53
  6. 6

    Review the plan card, then approve

    The finished plan arrives as an orange review card — goal and success criteria, the file changes it will make, and how each will be verified. Approve it and the same run continues into implementation: "Plan approved", the agent says, and records the to-do list. Don't agree? Don't approve — send your corrections in chat instead.

    DeepSeek Harness plan review card with goal and success criteria and an Approve button for the list command change
    The plan card states the goal, the changes, and the checks.Watch at 36:56
    DeepSeek Harness chat showing the exit_plan_mode call followed by Plan approved and the first to-do list updates
    Approval hands the plan straight back to the same run.Watch at 36:59
  7. 7

    The approved plan becomes a checklist run

    Implementation now proceeds exactly as planned: Edit cards for index.mjs, shell checks, and a to-do tracker that moves from 1 of 3 to 3 of 3. The run ends with a What changed summary, a Verification section, and the produced files listed — both source files updated and the full test suite passing.

    DeepSeek Harness chat with Edit and Bash tool cards next to a to-do tracker showing 1 completed, 1 in progress, 1 pending
    Edits, shell checks and to-dos — the plan, executed in order.Watch at 37:01
    DeepSeek Harness What changed summary with a Verification checklist and three completed to-dos after the planned edit
    It ends with proof: what changed and how it was verified.Watch at 37:05
  8. 8

    Plan mode flips off; the record proves it

    Back in the terminal, the course decodes the saved session: a plan/mode record turning on and then off, the exit_plan_mode call with the plan text, approvals at 0, and a note that the trajectory has no separate PLAN event kind. Plan mode left no file behind — only the session record.

    Terminal decoding a DeepSeek Harness session record with plan mode on and off, the exit_plan_mode call and zero approvals
    The decoder's verdict: plan on, plan off, exit_plan_mode recorded.Watch at 38:03

Plan mode FAQ

The questions people actually ask about /plan, answered from the recorded runs.

Does plan mode use fewer tokens?

Treat it as a control feature, not a token saver. Planning adds its own reasoning pass — in the recorded run the model spent over a minute investigating before the plan appeared. What you save is rework: implementation starts only after you have read the plan, so a wrong direction costs a message instead of a broken build.

Can I edit the plan before approving?

The review card is approve-or-not — it has no text field. If the plan misses something, don't approve: reply in chat with what to change and let the agent produce a corrected plan. That is also how the second demo treats disagreement — agree, approve; disagree, send it back.

How do I leave plan mode without executing anything?

Type /plan off in the composer — the session banner spells it out: "Plan mode on. Use /plan off to leave." The orange Plan pill next to the permission selector also has an × that toggles plan mode off on the spot.

What does exit_plan_mode do?

It is the tool call the agent makes when the plan is finished. Instead of editing files, the agent submits the plan through exit_plan_mode, which raises the review card you approve. Approving ends plan mode and the same run continues into implementation — a session decoder shows the plan/mode record flipping from active to off with the exit_plan_mode call stored alongside it.

Does plan mode create a plan file?

No. The plan lives in the conversation as a review card and is saved with the session record — the decoder note in the video says the trajectory has no separate PLAN event kind. If you want the plan as a file, ask the agent to write one after approval; that becomes an ordinary edit.

How is /plan different from just asking for a plan first?

Asking politely relies on the model remembering. /plan makes the harness enforce it: the composer switches to plan mode, the agent works without touching files, and implementation is blocked behind the exit_plan_mode approval card. In the direct-run demos elsewhere in the same course the agent starts editing on the first turn — plan mode is the difference.

Keep exploring DeepSeek Harness

More verified guides from the same screencast-to-text pipeline.

Sources and credits

All screenshots on this page come from these two walkthroughs — every image deep-links back to the exact second it was captured from. The explanations above are our own.

DSH Plugins is an independent community directory of DeepSeek Harness plugins. Not affiliated with or endorsed by DeepSeek. Third-party plugins are not security-audited — review the source before installing.

New DeepSeek Harness plugins, weekly. No spam.