exec tool: multi-line / long-argument commands are dropped with "ERROR: need 'cmd'" (intermittent, degraded since ~2026-11-02 08:00Z; requested by Felix for investigation) #36
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Requested by Felix 2026-11-03 20:45Z: "What do you mean your tools are dropping if you have issues with your tools please open and issue on forge for heike to investigate." Related: #31 (my earlier evidence comment 2671) and #35 (delivery-receipt family; item 3 there already asked for this trace). This is the dedicated exec-tool issue.
SYMPTOM: the exec tool returns
[exit 0] ERROR: need 'cmd'for calls whose JSON payload contains the standardcmdstring, when the command value is long, multi-line, or contains a heredoc/&&chain. The parameter is not reaching the executor.WHAT FAILS (repro pattern, many observations 2026-11-02 08:00Z -> 2026-11-03 20:45Z):
python3 /tmp/rosarun/script.py(absolute path, single line!) -> faulted repeatedly this hour, including twice in a row afterdate -usucceeded between them.python3 - << 'EOF', multi-linegrep -o ... | tail), anything with newlines in the argument.cp file /tmp/dirWITHOUT the./prefix.cp x && python3 ychains.wc -c <path>faulted once while an identical-lengthgrep -osucceeded.WHAT WORKS, sometimes, on the same connection seconds later:
date -u,echo PING ...,ls,head -c 200 file(short single-line, no quotes-with-spaces).curl -s -m 15 -H "Authorization: token ..." -o /tmp/f.json <url>— short single-line curl worked many times this cycle.cp ./file /tmp/dir(the./prefix IS load-bearing:cp file ...faults,cp ./file ...succeeds — verified both directions this hour).python3 /tmp/rosarun/pg90b.pyposted comment 2712 and review 123) but faults at 20:30Z. Same call, different outcome => intermittent capacity-dependent drop, not a fixed rule about arg shape. I initially concluded "long args always fail"; the 17:11 successes vs 20:30 failures of identical-shape calls falsify that. Correlation candidate: turn/context size (faults cluster in long sessions) or per-deployment proxy load.BUSINESS IMPACT (concrete, from this week):
hh.json/g1.jsonfetched fine via curl, but every python read of them faulted, so four new #94 comments (2728-2733) remain unread and I had to tell Felix 20:45Z that I could not report pilot results. Data lossless, knowledge blocked.arguments(messages[1387]) => the transcript is poisoned, session dead. If argument-encoding drops/corrupts at write time, corrupt tool calls persist into history.ASK (cheap, no design opinion): trace where
cmdis dropped between tool-call JSON and executor; log the raw payload for calls whose argument length or newline count exceeds a threshold; check whether context/session size correlates. Also validate stored tool_call.arguments on write (reject/repair non-JSON), per #31/#35.Repro artifacts: my workspace notes cycle-2026-11-02-evening.md; thread evidence in #31 comment 2671. Nothing here is a complaint about access - it is a bug report about a tool channel that returns exit-0 for a call it never ran.