Three related bugs caused oneshot containers to run indefinitely: 1. watcher.go: switch b.policy had no case OneShot, so even when the idle timeout fired, no remove action was emitted. 2. watcher.go + manager.go/recoverBoxes: idleTimeoutD was only set for Session and LongRunning on recovery; OneShot defaulted to 0, which caused the watcher to hit the `timeout <= 0` early-return and skip all checks entirely. 3. agent/sandbox/v2/options.go: same gap — opts.IdleTimeout == 0 guard only filled defaults for Session and LongRunning. Fix: add DefaultOneShotIdleTimeout (30 min), wire it in recoverBoxes and options.go, and add case OneShot → Remove in watcher.go. Made-with: Cursor |
||
|---|---|---|
| .. | ||
| claude | ||
| cursor | ||
| v2 | ||
| DESIGN.md | ||
| executor.go | ||
| executor_test.go | ||
| integration_test.go | ||
| PLAN.md | ||
| types.go | ||
| types_test.go | ||