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
[BUG]: proxy corrupts binary response bodies served as text/* (UTF-8 decode) #1263
The server sends this binary body with Content-Type: text/plain; charset=UTF-8. No secret is attached to the rule.
What is expected?
The response body arrives byte for byte (128 bytes), as it does for hosts without a rule.
What is actually happening?
The body arrives with 226 bytes: every invalid UTF-8 byte is replaced by U+FFFD (ef bf bd).
It looks like the body is decoded as UTF-8 text (probably for response scrubbing) and re-encoded.
Same result with --compressed and with a wildcard rule (*.org). In permissive mode, an unmatched host passes through unchanged (128 bytes).
Real-world effect: Go behind the proxy cannot verify modules against its checksum database (go get, go install pkg@version, toolchain switches fail with tile ... len=226, want 128).
We run varlock as a per-user broker with egress="strict" in front of Claude Code's sandbox, so all of the agent's traffic goes through matched rules.
Suggestion: Scrub only bodies that are valid UTF-8 (or skip scrubbing when no secret was sent to that host – the docs say scrubbing is scoped to values a rule sends to the host), and otherwise pass the raw bytes through.
✅ A fix has been merged to main in #1265 and will ship in the next release. GitHub auto-closed this issue on merge, but the change isn't published yet.
Activity
pullfrog commentedon Oct 30, 2026
theoephraim commentedon Oct 30, 2026
thanks for the report! Will get it sorted asap.
github-actions commentedon Nov 2, 2026
✅ A fix has been merged to
mainin #1265 and will ship in the next release. GitHub auto-closed this issue on merge, but the change isn't published yet.