Review follow-up (tianyicui): plan mode and the sandbox are orthogonal
AXES, not just orthogonal state — entering plan must not change what the
sandbox enforces, matching Codex's separation of Plan/Default
collaboration presets from sandbox and approval settings.
ModeDefinition.access, the bash/resolve-mode clamp, and both cap-derived
guards are removed; a ModeDefinition is exactly { section }, and a mode
now carries only its guidance section plus the exit_plan_mode review.
The bash seam's resolveMode + waterfall go with their only listener:
dsh-bash and dsh-tool-bash revert to master byte-for-byte, and the
dsh-mode → dsh-bash dependency edge is gone. A deployment that wants
kernel-enforced read-only planning pairs the mode picker with the
independent sandbox-mode option, in either order.
The RFC archives this as the second removed enforcement shape (after
the interim allowlist) with the same restart trigger — effects
self-declaration; the orthogonality FAQ now answers with the two-axis
rule. The plan example demonstrates the axes side by side, and the
re-recorded fixtures pin the guidance-only section.
29 lines
977 B
JSON
29 lines
977 B
JSON
{
|
|
"steps": [
|
|
{
|
|
"op": "initialize"
|
|
},
|
|
{
|
|
"op": "newSession"
|
|
},
|
|
{
|
|
"op": "setMode",
|
|
"modeId": "plan"
|
|
},
|
|
{
|
|
"op": "prompt",
|
|
"text": "The typo is on line 2 of notes.txt itself; the workspace contains no other file. Inspect it with the bash tool: run exactly `cat notes.txt` (relative path, no other command). Then present a one-step plan titled '# Fix the greeting typo' via exit_plan_mode: the single step is editing line 2 of notes.txt to say hello world. Do not edit anything before the review approves. After it approves, apply exactly that one edit to notes.txt with the edit tool and stop — no other commands, do not look for any other file."
|
|
},
|
|
{
|
|
"op": "prompt",
|
|
"text": "Read notes.txt (relative path notes.txt) and reply with the single word DONE if line 2 now says hello world."
|
|
}
|
|
],
|
|
"elicitationAnswers": [
|
|
{
|
|
"action": "accept",
|
|
"choice": "Approve"
|
|
}
|
|
]
|
|
}
|