In Auto-Review only, a delete by shell (rm, rmdir, unlink, find -delete or
-exec rm, xargs rm) or by apply_patch whose target resolves to the filesystem
root, the home folder, the workspace root or an ancestor, or a .git folder is
a built-in floor decision ahead of allow rules and the reviewer: a forced
prompt with the owner present, a block for background and headless runs.
Resolution handles ~, $HOME, %USERPROFILE%, .., symlinks (physical path of
the deepest existing ancestor), cd/pushd tracking, globs, Windows drive and
UNC roots; unknown expansions count as critical because matching too much
only asks. The Auto mapping in auto_review_plan_decision_for_context is
ForcePrompt for this rule and Block for every other built-in hold. Ask,
Accept Edits and Full Access never evaluate the rule.
Completion of an agy (Gemini 4 Hydrogen) draft: cut the speculative file-tool
heuristics (name-guessed delete tools, empty-write and fallback patch parsing)
in favor of the existing file_write_delete_paths, limited the shell scan to the
command text, and added xargs, subshell cwd and failed-cd handling. Raised the
path_canonicalize blocking-call budget 3 to 5 (synchronous context build, as
strictly_inside already is) and regenerated the agent-docs snapshot.
Checks: cargo fmt --check and scripts/preflight.sh --check pass; tests run on
hosted CI for this SHA.
Worker: agy 1.5.7 with gemini-4-hydrogen-high, completed by Claude Sonnet 5.5; reviewed and landed by the Codewhale coordinator.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-11-12 17:32:55 -08:00
8 changed files with 1452 additions and 26 deletions
"content":"# Modes and Permission Postures\n\n> 阅读简体中文版:[zh_hans/MODES.md](zh_hans/MODES.md)\n\nCodewhale has three related concepts:\n\n- **TUI mode**: what kind of visible interaction you're in (Plan/Work).\n- **Permission posture**: how aggressively the UI asks before executing tools.\n- **Workflow**: named steps that coordinate sub-agents, with dependencies and\n results, available in any TUI mode.\n\nModel selection is separate. `--model auto` and `/model auto` route each turn to\na concrete model and thinking level; they are not TUI modes and are not on the\npermission dial.\n\nWorkflow runs named steps through the same sub-agent runtime; Fleet manages\ntheir saved roles and model assignments. A workflow adds ordering, result\nhandoffs, gates and a progress view. The active mode and permission posture\nstill control what each step may execute.\n\nBefore assigning steps, query `agent(action=\"roster\")` for the saved Fleet\nmodels and roles. A plan child can select a listed model with `model`, or use\nthe saved `role`/`profile` assignment. An Exact Fleet fixes each member's route.\n\n## TUI Modes\n\nOne dial says how much Codewhale may do without asking. Press `Shift+Tab` to\nstep it: **Ask → Accept Edits → Plan → Auto-Review → Full Access → Ask**. Plan\nis the Plan mode; every other stop is Work with that permission posture. The\nfooter shows the current stop and `Shift+Tab to change`. New installs start on\nAccept Edits when no permission posture is saved. An explicit saved choice,\nincluding Ask from an earlier version, stays in control.\n`Tab` only completes composer menus, commands, file mentions and suggestions;\nit never changes the mode, and never sends or queues composer text (use\n`Enter`).\nEvery change of effective permission writes a `Permissions changed to …` line\nin the transcript.\nPress `Ctrl+T` to cycle reasoning effort.\nRun `/mode` to open the mode picker, or switch directly with `/mode work` or\n`/mode plan`. `operate` and its spellings still parse, as Work, and say that\nOperate was retired, so an older setting or script never errors.\n\n- **Plan**: design-first prompting. The stable primitive names remain familiar, but the runtime centrally refuses file mutation and shell execution. Read-only inspection and policy-allowed research, including deferred Web search/fetch, remain available. When a Plan turn successfully finishes a nonempty response, including a prose-only plan, the TUI asks how to continue: Work (Ask), Work (Accept Edits), Work (Auto-Review), or keep planning. Work sends the exact approved response as a normal follow-up and preserves that turn's existing To-dos, or adds one pending plan item without replacing unrelated work.\n- **Work** (internally `agent`): ordinary multi-step execution. The first-turn toolbox includes `read`, `write`, `edit`, `file_search`, `grep_files`, `bash`, `agent`, `todo_write`, `present`, and `load_skill`, plus `create_goal`, `get_goal`, `update_goal`, and `task_shell_wait` so goal and background-shell controls are available without discovery. The agent calls `create_goal` when a request is a durable objective; the host never infers a goal from wording, and the contract must not tell the model otherwise. Approval, sandbox, repository law, and managed policy decide what may execute.\n- **Operate is retired.** It was Work with an orchestration contract, and that contract now lives in every session's constitution: make a goal of a durable request, keep the plan visible, fan independent work out to parallel sub-agents, and have an independent reviewer try to refute a non-trivial change. A saved `default_mode = \"operate\"` loads as Work and says so once; a Runtime API request with `mode: \"operate\"`runsas`agent`withthedefaultposture(AcceptEdits)andlogsonenoticeperprocess,neveranerror.AgentsforkedfromanolderOperateconversationdonotinherititscontract.Multi-agentworkstayson`agent`,`workflow`and`/fleet`ineverymode.\n\n`Act`and`/modeact`remaincompatibilityaliasesforWork.Savedsettings\nstillnormalizetotheinternalvalue`agent`.\n\n###Toolavailabilitybymode\n\n|Toolfamily|Plan|Work|\n|:---|:---:|:---:|\n|`read`andpolicy-alloweddeferredresearchtools|yes|yes|\n|`write`and`edit`|visiblenames;executiondenied|approval-andpolicy-gated|\n|`bash`|visiblename;executiondenied|approval-andpolicy-gated;delegationispreferredwhenparallelismorisolationhelps|\n|`agent`|yes,subjecttochild-depthauthority|yes,subjecttochild-depthauthority|\n|Deferrednative,MCP,andplugintools|discoverablethrough`tool_search`whenpolicypermits|same|\n|Paidorexternal-servicetools|followspermissionposture|followspermissionposture|\n|Accessoutsidetheworkspaceroot|explicittrustedpathsonly|onlythroughtrustedpathsortrustmode;fleetprofilesneverwidenit|\n\nModechangesschedulingemphasLine truncated
"content":"# Modes and Permission Postures\n\n> 阅读简体中文版:[zh_hans/MODES.md](zh_hans/MODES.md)\n\nCodewhale has three related concepts:\n\n- **TUI mode**: what kind of visible interaction you're in (Plan/Work).\n- **Permission posture**: how aggressively the UI asks before executing tools.\n- **Workflow**: named steps that coordinate sub-agents, with dependencies and\n results, available in any TUI mode.\n\nModel selection is separate. `--model auto` and `/model auto` route each turn to\na concrete model and thinking level; they are not TUI modes and are not on the\npermission dial.\n\nWorkflow runs named steps through the same sub-agent runtime; Fleet manages\ntheir saved roles and model assignments. A workflow adds ordering, result\nhandoffs, gates and a progress view. The active mode and permission posture\nstill control what each step may execute.\n\nBefore assigning steps, query `agent(action=\"roster\")` for the saved Fleet\nmodels and roles. A plan child can select a listed model with `model`, or use\nthe saved `role`/`profile` assignment. An Exact Fleet fixes each member's route.\n\n## TUI Modes\n\nOne dial says how much Codewhale may do without asking. Press `Shift+Tab` to\nstep it: **Ask → Accept Edits → Plan → Auto-Review → Full Access → Ask**. Plan\nis the Plan mode; every other stop is Work with that permission posture. The\nfooter shows the current stop and `Shift+Tab to change`. New installs start on\nAccept Edits when no permission posture is saved. An explicit saved choice,\nincluding Ask from an earlier version, stays in control.\n`Tab` only completes composer menus, commands, file mentions and suggestions;\nit never changes the mode, and never sends or queues composer text (use\n`Enter`).\nEvery change of effective permission writes a `Permissions changed to …` line\nin the transcript.\nPress `Ctrl+T` to cycle reasoning effort.\nRun `/mode` to open the mode picker, or switch directly with `/mode work` or\n`/mode plan`. `operate` and its spellings still parse, as Work, and say that\nOperate was retired, so an older setting or script never errors.\n\n- **Plan**: design-first prompting. The stable primitive names remain familiar, but the runtime centrally refuses file mutation and shell execution. Read-only inspection and policy-allowed research, including deferred Web search/fetch, remain available. When a Plan turn successfully finishes a nonempty response, including a prose-only plan, the TUI asks how to continue: Work (Ask), Work (Accept Edits), Work (Auto-Review), or keep planning. Work sends the exact approved response as a normal follow-up and preserves that turn's existing To-dos, or adds one pending plan item without replacing unrelated work.\n- **Work** (internally `agent`): ordinary multi-step execution. The first-turn toolbox includes `read`, `write`, `edit`, `file_search`, `grep_files`, `bash`, `agent`, `todo_write`, `present`, and `load_skill`, plus `create_goal`, `get_goal`, `update_goal`, and `task_shell_wait` so goal and background-shell controls are available without discovery. The agent calls `create_goal` when a request is a durable objective; the host never infers a goal from wording, and the contract must not tell the model otherwise. Approval, sandbox, repository law, and managed policy decide what may execute.\n- **Operate is retired.** It was Work with an orchestration contract, and that contract now lives in every session's constitution: make a goal of a durable request, keep the plan visible, fan independent work out to parallel sub-agents, and have an independent reviewer try to refute a non-trivial change. A saved `default_mode = \"operate\"` loads as Work and says so once; a Runtime API request with `mode: \"operate\"`runsas`agent`withthedefaultposture(AcceptEdits)andlogsonenoticeperprocess,neveranerror.AgentsforkedfromanolderOperateconversationdonotinherititscontract.Multi-agentworkstayson`agent`,`workflow`and`/fleet`ineverymode.\n\n`Act`and`/modeact`remaincompatibilityaliasesforWork.Savedsettings\nstillnormalizetotheinternalvalue`agent`.\n\n###Toolavailabilitybymode\n\n|Toolfamily|Plan|Work|\n|:---|:---:|:---:|\n|`read`andpolicy-alloweddeferredresearchtools|yes|yes|\n|`write`and`edit`|visiblenames;executiondenied|approval-andpolicy-gated|\n|`bash`|visiblename;executiondenied|approval-andpolicy-gated;delegationispreferredwhenparallelismorisolationhelps|\n|`agent`|yes,subjecttochild-depthauthority|yes,subjecttochild-depthauthority|\n|Deferrednative,MCP,andplugintools|discoverablethrough`tool_search`whenpolicypermits|same|\n|Paidorexternal-servicetools|followspermissionposture|followspermissionposture|\n|Accessoutsidetheworkspaceroot|explicittrustedpathsonly|onlythroughtrustedpathsortrustmode;fleetprofilesneverwidenit|\n\nModechangesschedulingemphasLine truncated
"content":"# Modes and Permission Postures\n\n> 阅读简体中文版:[zh_hans/MODES.md](zh_hans/MODES.md)\n\nCodewhale has three related concepts:\n\n- **TUI mode**: what kind of visible interaction you're in (Plan/Work).\n- **Permission posture**: how aggressively the UI asks before executing tools.\n- **Workflow**: named steps that coordinate sub-agents, with dependencies and\n results, available in any TUI mode.\n\nModel selection is separate. `--model auto` and `/model auto` route each turn to\na concrete model and thinking level; they are not TUI modes and are not on the\npermission dial.\n\nWorkflow runs named steps through the same sub-agent runtime; Fleet manages\ntheir saved roles and model assignments. A workflow adds ordering, result\nhandoffs, gates and a progress view. The active mode and permission posture\nstill control what each step may execute.\n\nBefore assigning steps, query `agent(action=\"roster\")` for the saved Fleet\nmodels and roles. A plan child can select a listed model with `model`, or use\nthe saved `role`/`profile` assignment. An Exact Fleet fixes each member's route.\n\n## TUI Modes\n\nOne dial says how much Codewhale may do without asking. Press `Shift+Tab` to\nstep it: **Ask → Accept Edits → Plan → Auto-Review → Full Access → Ask**. Plan\nis the Plan mode; every other stop is Work with that permission posture. The\nfooter shows the current stop and `Shift+Tab to change`. New installs start on\nAccept Edits when no permission posture is saved. An explicit saved choice,\nincluding Ask from an earlier version, stays in control.\n`Tab` only completes composer menus, commands, file mentions and suggestions;\nit never changes the mode, and never sends or queues composer text (use\n`Enter`).\nEvery change of effective permission writes a `Permissions changed to …` line\nin the transcript.\nPress `Ctrl+T` to cycle reasoning effort.\nRun `/mode` to open the mode picker, or switch directly with `/mode work` or\n`/mode plan`. `operate` and its spellings still parse, as Work, and say that\nOperate was retired, so an older setting or script never errors.\n\n- **Plan**: design-first prompting. The stable primitive names remain familiar, but the runtime centrally refuses file mutation and shell execution. Read-only inspection and policy-allowed research, including deferred Web search/fetch, remain available. When a Plan turn successfully finishes a nonempty response, including a prose-only plan, the TUI asks how to continue: Work (Ask), Work (Accept Edits), Work (Auto-Review), or keep planning. Work sends the exact approved response as a normal follow-up and preserves that turn's existing To-dos, or adds one pending plan item without replacing unrelated work.\n- **Work** (internally `agent`): ordinary multi-step execution. The first-turn toolbox includes `read`, `write`, `edit`, `file_search`, `grep_files`, `bash`, `agent`, `todo_write`, `present`, and `load_skill`, plus `create_goal`, `get_goal`, `update_goal`, and `task_shell_wait` so goal and background-shell controls are available without discovery. The agent calls `create_goal` when a request is a durable objective; the host never infers a goal from wording, and the contract must not tell the model otherwise. Approval, sandbox, repository law, and managed policy decide what may execute.\n- **Operate is retired.** It was Work with an orchestration contract, and that contract now lives in every session's constitution: make a goal of a durable request, keep the plan visible, fan independent work out to parallel sub-agents, and have an independent reviewer try to refute a non-trivial change. A saved `default_mode = \"operate\"` loads as Work and says so once; a Runtime API request with `mode: \"operate\"`runsas`agent`withthedefaultposture(AcceptEdits)andlogsonenoticeperprocess,neveranerror.AgentsforkedfromanolderOperateconversationdonotinherititscontract.Multi-agentworkstayson`agent`,`workflow`and`/fleet`ineverymode.\n\n`Act`and`/modeact`remaincompatibilityaliasesforWork.Savedsettings\nstillnormalizetotheinternalvalue`agent`.\n\n###Toolavailabilitybymode\n\n|Toolfamily|Plan|Work|\n|:---|:---:|:---:|\n|`read`andpolicy-alloweddeferredresearchtools|yes|yes|\n|`write`and`edit`|visiblenames;executiondenied|approval-andpolicy-gated|\n|`bash`|visiblename;executiondenied|approval-andpolicy-gated;delegationispreferredwhenparallelismorisolationhelps|\n|`agent`|yes,subjecttochild-depthauthority|yes,subjecttochild-depthauthority|\n|Deferrednative,MCP,andplugintools|discoverablethrough`tool_search`whenpolicypermits|same|\n|Paidorexternal-servicetools|followspermissionposture|followspermissionposture|\n|Accessoutsidetheworkspaceroot|explicittrustedpathsonly|onlythroughtrustedpathsortrustmode;fleetprofilesneverwidenit|\n\nModechangesschedulingemphasLine truncated
"content":"# Modes and Permission Postures\n\n> 阅读简体中文版:[zh_hans/MODES.md](zh_hans/MODES.md)\n\nCodewhale has three related concepts:\n\n- **TUI mode**: what kind of visible interaction you're in (Plan/Work).\n- **Permission posture**: how aggressively the UI asks before executing tools.\n- **Workflow**: named steps that coordinate sub-agents, with dependencies and\n results, available in any TUI mode.\n\nModel selection is separate. `--model auto` and `/model auto` route each turn to\na concrete model and thinking level; they are not TUI modes and are not on the\npermission dial.\n\nWorkflow runs named steps through the same sub-agent runtime; Fleet manages\ntheir saved roles and model assignments. A workflow adds ordering, result\nhandoffs, gates and a progress view. The active mode and permission posture\nstill control what each step may execute.\n\nBefore assigning steps, query `agent(action=\"roster\")` for the saved Fleet\nmodels and roles. A plan child can select a listed model with `model`, or use\nthe saved `role`/`profile` assignment. An Exact Fleet fixes each member's route.\n\n## TUI Modes\n\nOne dial says how much Codewhale may do without asking. Press `Shift+Tab` to\nstep it: **Ask → Accept Edits → Plan → Auto-Review → Full Access → Ask**. Plan\nis the Plan mode; every other stop is Work with that permission posture. The\nfooter shows the current stop and `Shift+Tab to change`. New installs start on\nAccept Edits when no permission posture is saved. An explicit saved choice,\nincluding Ask from an earlier version, stays in control.\n`Tab` only completes composer menus, commands, file mentions and suggestions;\nit never changes the mode, and never sends or queues composer text (use\n`Enter`).\nEvery change of effective permission writes a `Permissions changed to …` line\nin the transcript.\nPress `Ctrl+T` to cycle reasoning effort.\nRun `/mode` to open the mode picker, or switch directly with `/mode work` or\n`/mode plan`. `operate` and its spellings still parse, as Work, and say that\nOperate was retired, so an older setting or script never errors.\n\n- **Plan**: design-first prompting. The stable primitive names remain familiar, but the runtime centrally refuses file mutation and shell execution. Read-only inspection and policy-allowed research, including deferred Web search/fetch, remain available. When a Plan turn successfully finishes a nonempty response, including a prose-only plan, the TUI asks how to continue: Work (Ask), Work (Accept Edits), Work (Auto-Review), or keep planning. Work sends the exact approved response as a normal follow-up and preserves that turn's existing To-dos, or adds one pending plan item without replacing unrelated work.\n- **Work** (internally `agent`): ordinary multi-step execution. The first-turn toolbox includes `read`, `write`, `edit`, `file_search`, `grep_files`, `bash`, `agent`, `todo_write`, `present`, and `load_skill`, plus `create_goal`, `get_goal`, `update_goal`, and `task_shell_wait` so goal and background-shell controls are available without discovery. The agent calls `create_goal` when a request is a durable objective; the host never infers a goal from wording, and the contract must not tell the model otherwise. Approval, sandbox, repository law, and managed policy decide what may execute.\n- **Operate is retired.** It was Work with an orchestration contract, and that contract now lives in every session's constitution: make a goal of a durable request, keep the plan visible, fan independent work out to parallel sub-agents, and have an independent reviewer try to refute a non-trivial change. A saved `default_mode = \"operate\"` loads as Work and says so once; a Runtime API request with `mode: \"operate\"`runsas`agent`withthedefaultposture(AcceptEdits)andlogsonenoticeperprocess,neveranerror.AgentsforkedfromanolderOperateconversationdonotinherititscontract.Multi-agentworkstayson`agent`,`workflow`and`/fleet`ineverymode.\n\n`Act`and`/modeact`remaincompatibilityaliasesforWork.Savedsettings\nstillnormalizetotheinternalvalue`agent`.\n\n###Toolavailabilitybymode\n\n|Toolfamily|Plan|Work|\n|:---|:---:|:---:|\n|`read`andpolicy-alloweddeferredresearchtools|yes|yes|\n|`write`and`edit`|visiblenames;executiondenied|approval-andpolicy-gated|\n|`bash`|visiblename;executiondenied|approval-andpolicy-gated;delegationispreferredwhenparallelismorisolationhelps|\n|`agent`|yes,subjecttochild-depthauthority|yes,subjecttochild-depthauthority|\n|Deferrednative,MCP,andplugintools|discoverablethrough`tool_search`whenpolicypermits|same|\n|Paidorexternal-servicetools|followspermissionposture|followspermissionposture|\n|Accessoutsidetheworkspaceroot|explicittrustedpathsonly|onlythroughtrustedpathsortrustmode;fleetprofilesneverwidenit|\n\nModechangesschedulingemphasLine truncated
"content":"# Modes and Permission Postures\n\n> 阅读简体中文版:[zh_hans/MODES.md](zh_hans/MODES.md)\n\nCodewhale has three related concepts:\n\n- **TUI mode**: what kind of visible interaction you're in (Plan/Work).\n- **Permission posture**: how aggressively the UI asks before executing tools.\n- **Workflow**: named steps that coordinate sub-agents, with dependencies and\n results, available in any TUI mode.\n\nModel selection is separate. `--model auto` and `/model auto` route each turn to\na concrete model and thinking level; they are not TUI modes and are not on the\npermission dial.\n\nWorkflow runs named steps through the same sub-agent runtime; Fleet manages\ntheir saved roles and model assignments. A workflow adds ordering, result\nhandoffs, gates and a progress view. The active mode and permission posture\nstill control what each step may execute.\n\nBefore assigning steps, query `agent(action=\"roster\")` for the saved Fleet\nmodels and roles. A plan child can select a listed model with `model`, or use\nthe saved `role`/`profile` assignment. An Exact Fleet fixes each member's route.\n\n## TUI Modes\n\nOne dial says how much Codewhale may do without asking. Press `Shift+Tab` to\nstep it: **Ask → Accept Edits → Plan → Auto-Review → Full Access → Ask**. Plan\nis the Plan mode; every other stop is Work with that permission posture. The\nfooter shows the current stop and `Shift+Tab to change`. New installs start on\nAccept Edits when no permission posture is saved. An explicit saved choice,\nincluding Ask from an earlier version, stays in control.\n`Tab` only completes composer menus, commands, file mentions and suggestions;\nit never changes the mode, and never sends or queues composer text (use\n`Enter`).\nEvery change of effective permission writes a `Permissions changed to …` line\nin the transcript.\nPress `Ctrl+T` to cycle reasoning effort.\nRun `/mode` to open the mode picker, or switch directly with `/mode work` or\n`/mode plan`. `operate` and its spellings still parse, as Work, and say that\nOperate was retired, so an older setting or script never errors.\n\n- **Plan**: design-first prompting. The stable primitive names remain familiar, but the runtime centrally refuses file mutation and shell execution. Read-only inspection and policy-allowed research, including deferred Web search/fetch, remain available. When a Plan turn successfully finishes a nonempty response, including a prose-only plan, the TUI asks how to continue: Work (Ask), Work (Accept Edits), Work (Auto-Review), or keep planning. Work sends the exact approved response as a normal follow-up and preserves that turn's existing To-dos, or adds one pending plan item without replacing unrelated work.\n- **Work** (internally `agent`): ordinary multi-step execution. The first-turn toolbox includes `read`, `write`, `edit`, `file_search`, `grep_files`, `bash`, `agent`, `todo_write`, `present`, and `load_skill`, plus `create_goal`, `get_goal`, `update_goal`, and `task_shell_wait` so goal and background-shell controls are available without discovery. The agent calls `create_goal` when a request is a durable objective; the host never infers a goal from wording, and the contract must not tell the model otherwise. Approval, sandbox, repository law, and managed policy decide what may execute.\n- **Operate is retired.** It was Work with an orchestration contract, and that contract now lives in every session's constitution: make a goal of a durable request, keep the plan visible, fan independent work out to parallel sub-agents, and have an independent reviewer try to refute a non-trivial change. A saved `default_mode = \"operate\"` loads as Work and says so once; a Runtime API request with `mode: \"operate\"`runsas`agent`withthedefaultposture(AcceptEdits)andlogsonenoticeperprocess,neveranerror.AgentsforkedfromanolderOperateconversationdonotinherititscontract.Multi-agentworkstayson`agent`,`workflow`and`/fleet`ineverymode.\n\n`Act`and`/modeact`remaincompatibilityaliasesforWork.Savedsettings\nstillnormalizetotheinternalvalue`agent`.\n\n###Toolavailabilitybymode\n\n|Toolfamily|Plan|Work|\n|:---|:---:|:---:|\n|`read`andpolicy-alloweddeferredresearchtools|yes|yes|\n|`write`and`edit`|visiblenames;executiondenied|approval-andpolicy-gated|\n|`bash`|visiblename;executiondenied|approval-andpolicy-gated;delegationispreferredwhenparallelismorisolationhelps|\n|`agent`|yes,subjecttochild-depthauthority|yes,subjecttochild-depthauthority|\n|Deferrednative,MCP,andplugintools|discoverablethrough`tool_search`whenpolicypermits|same|\n|Paidorexternal-servicetools|followspermissionposture|followspermissionposture|\n|Accessoutsidetheworkspaceroot|explicittrustedpathsonly|onlythroughtrustedpathsortrustmode;fleetprofilesneverwidenit|\n\nModechangesschedulingemphasLine truncated
"content":"# Modes and Permission Postures\n\n> 阅读简体中文版:[zh_hans/MODES.md](zh_hans/MODES.md)\n\nCodewhale has three related concepts:\n\n- **TUI mode**: what kind of visible interaction you're in (Plan/Work).\n- **Permission posture**: how aggressively the UI asks before executing tools.\n- **Workflow**: named steps that coordinate sub-agents, with dependencies and\n results, available in any TUI mode.\n\nModel selection is separate. `--model auto` and `/model auto` route each turn to\na concrete model and thinking level; they are not TUI modes and are not on the\npermission dial.\n\nWorkflow runs named steps through the same sub-agent runtime; Fleet manages\ntheir saved roles and model assignments. A workflow adds ordering, result\nhandoffs, gates and a progress view. The active mode and permission posture\nstill control what each step may execute.\n\nBefore assigning steps, query `agent(action=\"roster\")` for the saved Fleet\nmodels and roles. A plan child can select a listed model with `model`, or use\nthe saved `role`/`profile` assignment. An Exact Fleet fixes each member's route.\n\n## TUI Modes\n\nOne dial says how much Codewhale may do without asking. Press `Shift+Tab` to\nstep it: **Ask → Accept Edits → Plan → Auto-Review → Full Access → Ask**. Plan\nis the Plan mode; every other stop is Work with that permission posture. The\nfooter shows the current stop and `Shift+Tab to change`. New installs start on\nAccept Edits when no permission posture is saved. An explicit saved choice,\nincluding Ask from an earlier version, stays in control.\n`Tab` only completes composer menus, commands, file mentions and suggestions;\nit never changes the mode, and never sends or queues composer text (use\n`Enter`).\nEvery change of effective permission writes a `Permissions changed to …` line\nin the transcript.\nPress `Ctrl+T` to cycle reasoning effort.\nRun `/mode` to open the mode picker, or switch directly with `/mode work` or\n`/mode plan`. `operate` and its spellings still parse, as Work, and say that\nOperate was retired, so an older setting or script never errors.\n\n- **Plan**: design-first prompting. The stable primitive names remain familiar, but the runtime centrally refuses file mutation and shell execution. Read-only inspection and policy-allowed research, including deferred Web search/fetch, remain available. When a Plan turn successfully finishes a nonempty response, including a prose-only plan, the TUI asks how to continue: Work (Ask), Work (Accept Edits), Work (Auto-Review), or keep planning. Work sends the exact approved response as a normal follow-up and preserves that turn's existing To-dos, or adds one pending plan item without replacing unrelated work.\n- **Work** (internally `agent`): ordinary multi-step execution. The first-turn toolbox includes `read`, `write`, `edit`, `file_search`, `grep_files`, `bash`, `agent`, `todo_write`, `present`, and `load_skill`, plus `create_goal`, `get_goal`, `update_goal`, and `task_shell_wait` so goal and background-shell controls are available without discovery. The agent calls `create_goal` when a request is a durable objective; the host never infers a goal from wording, and the contract must not tell the model otherwise. Approval, sandbox, repository law, and managed policy decide what may execute.\n- **Operate is retired.** It was Work with an orchestration contract, and that contract now lives in every session's constitution: make a goal of a durable request, keep the plan visible, fan independent work out to parallel sub-agents, and have an independent reviewer try to refute a non-trivial change. A saved `default_mode = \"operate\"` loads as Work and says so once; a Runtime API request with `mode: \"operate\"`runsas`agent`withthedefaultposture(AcceptEdits)andlogsonenoticeperprocess,neveranerror.AgentsforkedfromanolderOperateconversationdonotinherititscontract.Multi-agentworkstayson`agent`,`workflow`and`/fleet`ineverymode.\n\n`Act`and`/modeact`remaincompatibilityaliasesforWork.Savedsettings\nstillnormalizetotheinternalvalue`agent`.\n\n###Toolavailabilitybymode\n\n|Toolfamily|Plan|Work|\n|:---|:---:|:---:|\n|`read`andpolicy-alloweddeferredresearchtools|yes|yes|\n|`write`and`edit`|visiblenames;executiondenied|approval-andpolicy-gated|\n|`bash`|visiblename;executiondenied|approval-andpolicy-gated;delegationispreferredwhenparallelismorisolationhelps|\n|`agent`|yes,subjecttochild-depthauthority|yes,subjecttochild-depthauthority|\n|Deferrednative,MCP,andplugintools|discoverablethrough`tool_search`whenpolicypermits|same|\n|Paidorexternal-servicetools|followspermissionposture|followspermissionposture|\n|Accessoutsidetheworkspaceroot|explicittrustedpathsonly|onlythroughtrustedpathsortrustmode;fleetprofilesneverwidenit|\n\nModechangesschedulingemphasLine truncated
},
{
"path":"docs/public-surface-facts.json",
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.