Found while benchmarking (bench/). On the claude-cli/* backend, stdlib agent nodes (investigate, summarize) fail in ~2s and fold an empty exception message into state: findings=['[error] ']. A bare claude -p works on the same machine and same prompt, so the defect is somewhere in the adapter's hardened invocation (isolated settings, disallowed tools, stdin prompt), not in the CLI itself. Reproduced with all CLAUDE* env vars stripped, so it is not (only) nested-session detection.
Two problems, the second worse than the first:
- The delegated call fails where a direct one succeeds — needs the actual stderr/exception surfaced; an empty string is undebuggable.
- The stdlib goal check counts the error note as progress: the run above stopped
goal_met with nothing but ['[error] '] in notes. A run whose only output is a swallowed error should never read as success.
Repro:
mkdir /tmp/w && cd /tmp/w && touch a.txt
grapharc go "list the files here" --model claude-cli/sonnet --default --workspace /tmp/w --trace /tmp/w/t.jsonl
# state: findings=['[error] '], stop: goal_met
🤖 Generated with Claude Code
Found while benchmarking (
bench/). On theclaude-cli/*backend, stdlib agent nodes (investigate,summarize) fail in ~2s and fold an empty exception message into state:findings=['[error] ']. A bareclaude -pworks on the same machine and same prompt, so the defect is somewhere in the adapter's hardened invocation (isolated settings, disallowed tools, stdin prompt), not in the CLI itself. Reproduced with allCLAUDE*env vars stripped, so it is not (only) nested-session detection.Two problems, the second worse than the first:
goal_metwith nothing but['[error] ']innotes. A run whose only output is a swallowed error should never read as success.Repro:
🤖 Generated with Claude Code