Skip to main content
Run substrate approve to set a human_only field on a task and unblock an agent waiting at a transition gate. An agent’s MCP write tools refuse these fields entirely, so this CLI — run by a person at a terminal — is the only way the value gets set. That asymmetry is what turns a transition_guard requiring the field into a real human approval rather than a checkbox the agent ticks on its way past.

Usage

Arguments

string
required
The task id. The short 8-character form printed by substrate pending-approval is accepted.
string
required
The field name. It must be declared human_only on the board’s field_schema.
string
Parsed as JSON when possible — true, false, 42, "note" — otherwise taken as a string. Defaults to true, the approval case.

What It Does

approve resolves the task’s board, checks that the field is truly human_only, merges the value into custom_data, and writes it under optimistic concurrency. The event is stamped with a human:<os-user> actor, so the task history distinguishes your sign-off from any agent write. approve sets the field. It does not move the task — the agent retries the blocked move once the gate condition passes.
The web UI is read-only. There is no click-to-approve, deliberately — an approval should be something you typed.

See Also