droid exec --mission performs no work and reports success (num_turns 0, zero tokens, exit 0)
Summary
On droid 0.186.0, droid exec --mission short-circuits before any model call: it returns subtype: "success", is_error: false, exit code 0, with num_turns: 0, zero tokens, and zero credits. No file is touched. The same task without --mission runs normally and edits the file.
A single-variable control isolates --mission as the sole cause.
Environment
|
|
droid --version |
0.186.0 |
| OS |
macOS 15.7.7 (24G720) |
| Working dir |
fresh git init repo with a committed README.md |
| Autonomy |
--auto high |
Reproduction
cd /tmp/mission-probe # fresh git repo, README.md committed
# 1. plain control — works
droid exec -o json "reply ok"
# 2. single-variable control — --auto high, real edit, NO --mission — works, edits file
droid exec -o json --auto high "Add a one-line comment to README.md"
# 3. same edit WITH --mission — no-op, file untouched, still reports success
droid exec -o json --mission --auto high --model claude-opus-5 "Add a one-line comment to README.md"
Observed vs expected
| Run |
Command (abbrev) |
num_turns |
input_tokens |
factory_credits |
file edited? |
exit |
| Control |
droid exec "reply ok" |
1 |
2 |
9,338 |
n/a |
0 |
| Single-var control |
--auto high "Add a one-line comment…" |
3 |
6 |
52,966 |
yes |
0 |
| Mission |
--mission --auto high --model claude-opus-5 "…same…" |
0 |
0 |
0 |
no |
0 |
Runs 2 and 3 differ only by the --mission flag — same prompt, same --auto high, same cwd, same committed repo. Run 2 edits README.md; run 3 leaves it byte-identical.
Full JSON from the mission run:
{
"type": "result",
"subtype": "success",
"is_error": false,
"duration_ms": 328,
"num_turns": 0,
"result": "",
"session_id": "2befb512-7544-4b80-b11a-e47f8232f41a",
"usage": {
"input_tokens": 0,
"output_tokens": 0,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"factory_credits": 0
}
}
input_tokens: 0 is the load-bearing signal: the mission path exits before any model is called, rather than calling a model that then declines to act. That rules out prompt quality, model refusal, and permission denial — none of those can produce a zero-token run.
Ruled out
- Empty invocation — a positional prompt was supplied and quoted above.
- Model availability —
--model claude-opus-5 is the 0.186.0 default, so this is not an unresolvable/unavailable model ID.
- Auth / model path broken — the control runs on the same machine consumed tokens and (run 2) edited the file.
- Permission tier —
--auto high is the same level under which run 2 successfully edited the file.
Why the exit code matters
A run that performs no work and reports subtype: "success" / exit 0 is a silent-success failure mode. Any automation that trusts mission exit status will mark a step complete having executed nothing, and the zero-credit reading means a cost-based sanity check would not catch it either. Consumers currently have to assert on num_turns / token usage, not exit status, to detect this.
Notes
- The per-role flags (
--worker-model, --validator-model, --*-reasoning-effort) are present and documented as valid only with --mission, so the mission surface is expressible — it just does not execute on this version.
- Raw stdout for all three runs is attached/available on request (
run1-control.json, run2-autohigh-nomission.json, run3-mission.json).
droid exec --missionperforms no work and reports success (num_turns 0, zero tokens, exit 0)Summary
On
droid0.186.0,droid exec --missionshort-circuits before any model call: it returnssubtype: "success",is_error: false, exit code 0, withnum_turns: 0, zero tokens, and zero credits. No file is touched. The same task without--missionruns normally and edits the file.A single-variable control isolates
--missionas the sole cause.Environment
droid --versiongit initrepo with a committedREADME.md--auto highReproduction
Observed vs expected
num_turnsinput_tokensfactory_creditsdroid exec "reply ok"--auto high "Add a one-line comment…"--mission --auto high --model claude-opus-5 "…same…"Runs 2 and 3 differ only by the
--missionflag — same prompt, same--auto high, same cwd, same committed repo. Run 2 editsREADME.md; run 3 leaves it byte-identical.Full JSON from the mission run:
{ "type": "result", "subtype": "success", "is_error": false, "duration_ms": 328, "num_turns": 0, "result": "", "session_id": "2befb512-7544-4b80-b11a-e47f8232f41a", "usage": { "input_tokens": 0, "output_tokens": 0, "cache_read_input_tokens": 0, "cache_creation_input_tokens": 0, "factory_credits": 0 } }input_tokens: 0is the load-bearing signal: the mission path exits before any model is called, rather than calling a model that then declines to act. That rules out prompt quality, model refusal, and permission denial — none of those can produce a zero-token run.Ruled out
--model claude-opus-5is the 0.186.0 default, so this is not an unresolvable/unavailable model ID.--auto highis the same level under which run 2 successfully edited the file.Why the exit code matters
A run that performs no work and reports
subtype: "success"/ exit 0 is a silent-success failure mode. Any automation that trusts mission exit status will mark a step complete having executed nothing, and the zero-credit reading means a cost-based sanity check would not catch it either. Consumers currently have to assert onnum_turns/ token usage, not exit status, to detect this.Notes
--worker-model,--validator-model,--*-reasoning-effort) are present and documented as valid only with--mission, so the mission surface is expressible — it just does not execute on this version.run1-control.json,run2-autohigh-nomission.json,run3-mission.json).