Summary
Passing a --reasoning-effort value the target model does not support resolves silently to off (the weakest setting) instead of erroring or clamping to the nearest supported value. Exit code is 0 and nothing is printed. A caller requesting maximum reasoning gets none, silently, indefinitely.
Environment
droid 0.186.0, macOS (darwin 24.6.0), droid exec mode
Reproduction
claude-haiku-4-5-20251001 advertises reasoning efforts [off, low, medium, high]. xhigh is not in its list.
# requested xhigh -> resolves to off, exit 0, silent
droid exec --model claude-haiku-4-5-20251001 -r xhigh -o json '...'
# resolved: claude-haiku-4-5-20251001 / off
# control: one flag value different, resolves exactly as asked
droid exec --model claude-haiku-4-5-20251001 -r high -o json '...'
# resolved: claude-haiku-4-5-20251001 / high
Resolved effort read from message.reasoningEffort in the session transcript (~/.factory/sessions/), since the result envelope does not carry it.
Expected
An unsupported --reasoning-effort either errors (like an invalid --model does — that fails closed at exit 1 with the valid list) or clamps to the nearest supported value (high).
Actual
Resolves to off, the weakest value — inverting the intent of the flag — at exit 0 with no output. A validator pinned at -r xhigh against a model lacking it runs with reasoning disabled and no signal.
Summary
Passing a
--reasoning-effortvalue the target model does not support resolves silently tooff(the weakest setting) instead of erroring or clamping to the nearest supported value. Exit code is 0 and nothing is printed. A caller requesting maximum reasoning gets none, silently, indefinitely.Environment
droid0.186.0, macOS (darwin 24.6.0),droid execmodeReproduction
claude-haiku-4-5-20251001advertises reasoning efforts[off, low, medium, high].xhighis not in its list.Resolved effort read from
message.reasoningEffortin the session transcript (~/.factory/sessions/), since the result envelope does not carry it.Expected
An unsupported
--reasoning-efforteither errors (like an invalid--modeldoes — that fails closed at exit 1 with the valid list) or clamps to the nearest supported value (high).Actual
Resolves to
off, the weakest value — inverting the intent of the flag — at exit 0 with no output. A validator pinned at-r xhighagainst a model lacking it runs with reasoning disabled and no signal.