cfg (ast.SandboxV2) is a pointer shared across all concurrent calls to the same Assistant. GetComputer writes cfg.ID = <random hex> for each oneshot request, so concurrent tasks overwrite each other's ID. When cleanup runs in defer, cfg.ID holds whichever task last wrote it — not the ID of the box this request created — so manager.Remove/Heartbeat silently fails with "sandbox: not found" and the container leaks. Fix: derive the box ID from computer.ComputerInfo().BoxID, which is the immutable b.id set at Create time and never mutated by concurrent callers. Made-with: Cursor |
||
|---|---|---|
| .. | ||
| claude | ||
| cursor | ||
| v2 | ||
| DESIGN.md | ||
| executor.go | ||
| executor_test.go | ||
| integration_test.go | ||
| PLAN.md | ||
| types.go | ||
| types_test.go | ||