You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Agents as executors, governed call by call.[executor] agent = "copilot" (or opencode, claude, codex, gemini; any ACP agent
with kind = "acp" and argv) runs the agent over the Agent Client
Protocol. speccoder puts it into its ask-first mode and decides every
permission request itself: everything the agent does on its own asks
you (you can allow its plain reads for the task), and its file and
terminal calls go through speccoder's protected paths, masking and
sandbox. A change it makes without asking is reported as decides
alone; a missing sign-in stops with EXECUTOR-LOGIN and the agent's
own login as a step.
Pick an agent.speccoder run --agent opencode and the app's Run ▾
menu for one run; doctor --agents and Settings › Executor show each
agent as installed, signed in and asks first; the live card shows its
plan and the tally (asked · allowed · waited · refused); a failed task
offers Try with the next agent.
Every task finds its doer. A task naming only paths in its
feature's folder is planning work: it may write design documents there,
never spec.md, tasks.md, review.json or the constitution, and
ticks regression_only (planning_work). A [YOU] task, or one that
stopped BLOCKED, waits for you; the board and Before you run show
who does what.
No stop is a dead end. A BLOCKED stop offers I did it, Hint & retry and Skip: one key at a terminal (d/h/s),
buttons in the app, task done / task hint on the command line.
Run it here. In the app, a fix that is a speccoder command runs or
opens its view; your own fix (npm install, git add … && git commit)
runs from a card after a yes, in the OS sandbox with network, only as
speccoder built it. Sign-ins open a terminal. Every error has Copy
(masked) and Copy Bug Report; --copy at the CLI.
Changed
[executor] kind = "claude" and "codex" are gone: write agent = "claude" / agent = "codex". kind = "command" stays.
A task line's leading / (/specs/001-x/plan.md) names the
repository root.
Fixed
An acceptance author's command given as one string
(["cargo test --test acceptance_us1"]) was refused, so new projects'
tasks ticked regression_only; it is now that command's words.
Upgrading
speccoder replay of a run recorded before 0.5.0 reports a divergence
(model calls are recorded with a different key order); ticks and
attempts in git are unaffected.