@@ -283,6 +283,11 @@ The following commands are available during an interactive session:
283283 stays on disk so the next `/ssh <same target>` or next startup can
284284 auto-reuse it.],
285285 [`/model [id]`], [Show or switch the active model],
286+ [`/plan [on|off]`],
287+ [Toggle read-only plan mode (or press *Shift+Tab*). While on, the agent
288+ may only explore and ask questions until it calls `exit_plan_mode` and
289+ you approve a plan. Bare `/plan` toggles. The model can also enter plan
290+ mode itself.],
286291 [`/project <path >`],
287292 [Switch project root (reloads config, starts a new session)],
288293 [`/rename <title >`], [Set session title for the resume picker],
@@ -315,6 +320,27 @@ Press `/` to open a locate prompt: type a path and Enter jumps to the
315320deepest existing directory along it, so deep targets need no click-by-
316321click descent. A leading `~` expands to the home directory.
317322
323+ === Plan Mode
324+ <agent-plan-mode >
325+
326+ Plan mode is a read-only brake for non-trivial or hard-to-undo work
327+ (RTL edits, remote synthesis runs). Toggle it with *Shift+Tab* or
328+ `/plan on|off`, or let the model enter it itself with the
329+ `enter_plan_mode` tool. While active
330+ the agent may only take read-only actions: read files, search, query
331+ LSP, run read-only shell, and spawn read-only sub-agents. File writes,
332+ mutating shell, commits, and config changes are rejected, and the status
333+ line shows a `⏸ PLAN` chip.
334+
335+ Shell commands are not gated by a fixed allowlist; each one is judged by
336+ a separate LLM safety classifier and blocked (with a reason) if it could
337+ change state. The agent explores, clarifies with `ask_user` across as
338+ many rounds as needed, then calls `exit_plan_mode` to present a plan. You
339+ approve it or keep planning. On approval the agent leaves plan mode, the
340+ plan is saved to `<project >/.qsoc/plans/<session >.md`, and a budget-capped
341+ copy rides every subsequent turn so the executing agent keeps following
342+ it across context compaction. A newer approved plan replaces the old one.
343+
318344== KEYBOARD AND INPUT
319345<agent-keyboard >
320346Editing and navigation in the prompt:
0 commit comments