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
{{ message }}
Repository navigation
Commit febe46b
Browse filesBrowse the repository at this point in the historyBrowse files
Tool calls: no verdicts on half-received input; record whole calls (#353)
The streaming wall checked every rule against the arguments as they had
arrived so far. A host cut off at `http://127` looked external, a `$`
landed on the half-received end, and a record-only hit was written at
that moment with the rest of the call missing.
- A hit on an open (still streaming, or capped) argument counts only once
it is settled: code rules must stop before the end; a regex hit that
touches the end counts only if it still matches whatever character
comes next (`Rule::find_in`).
- While a call streams, only rules that can cut are checked. Every rule
runs again on the complete call: Anthropic `content_block_stop`,
Responses `output_item.done`, Chat `finish_reason` / `[DONE]` /
`Wall::finish` at the end of the stream. Record-only hits carry the
whole call.
- `Wall::cut_early(false)` defers every rule to completion: observe mode,
and a converted whole body where nothing has been sent yet.
- The relay passes the stream's tail (the restorer's held bytes, the
converter's closing frames) through the wall, then calls `finish`.
- `-T` counts as an upload only inside a curl command (`docker compose
exec -T`, `ssh -T` turn off the terminal).
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
0 commit comments