How it works
A prompt widget's permission mode
A prompt widget asks a coding harness a question and shows the answer.
By default the harness answers without using tools, so a widget asked to
search the web says it has no permission to. permission_mode lets the
widget use them. This page says why it looks the way it does.
The harness’s own names
The values are the names Claude and Codex use themselves: Claude’s
--permission-mode choices, and Codex’s --sandbox values and two of its
flags. The CLI invents none of them, so what you read in a harness’s own
help is what you write in the widget, and what the app passes on.
The lists live in the engine contract (devmachine widgets schema).
When a harness release adds a mode, a CLI release adds it to the list;
until then the CLI refuses the new name, the same way it refuses a typo.
No mode means today’s behaviour
A widget without permission_mode runs exactly the command it ran
before engine 1.6. Nothing about an existing widget changes.
Why a mode with no checks never runs on a timer
bypassPermissions, danger-full-access and
dangerously-bypass-approvals-and-sandbox let the harness change files
and run commands without asking anyone. A widget on a timer runs while
you are away, so these modes take only every: manual: each run happens
because you pressed refresh. One rule with no exceptions is easy to
check, and easy to relax later if it proves too strict.
The contract marks these modes as dangerous, so the CLI, the app and
an agent all read the same list.
What you approve
A prompt widget written in a board waits for Allow. The mode is part of what you approve: change it and the widget asks again, and a mode with no checks shows a red warning on the card. See why a widget an agent wrote waits for you.
Your login stays the same
A mode changes what the harness may do, not who runs it. It does not change the account or the home folder, so the harness keeps the login it already has on that computer, machine or workspace.