Commit 2885e0c
feat(sandboxes): reject harness=deepagents at the warm-sandbox door
The cross-harness suite proved deepagents has an engine-level conversation
persistence gap: its LangGraph checkpointer is in-memory only, not bridged
to the SessionStore protocol the way claude-agent-sdk and gitagent are.
Verified scenarios (sessionStore:mongo + sessionId pinned through restore):
claude-agent-sdk: AURORA-42 recalled after restore ✓
gitagent: AURORA-42 recalled after restore ✓
deepagents: "This appears to be the start of our conversation" ✗
Rather than ship a sandbox surface that's half-broken for one of three
harnesses, gate at the door:
POST /sandboxes with harness=deepagents
→ 400 { code: HARNESS_NOT_SUPPORTED, message: "...use /run or /tasks..." }
Also gate POST /sandboxes/restore on snapshot.config.harness=deepagents
(blocks any pre-existing deepagents snapshots from being revived).
Multi-turn warmth WITHIN a single live deepagents sandbox works fine —
the gap only surfaces across snapshot/restore. But the warm-pool feature
contract IS persistence-friendly (autoSave on dispose, etc.), so partial
support would be a footgun. Refuse cleanly with a helpful redirect to
the right surface (/run + /tasks both work for deepagents one-shot work).
Closing the gap is a future wedge: bridge engine-deepagents' MemorySaver
checkpointer to SessionStore the way engine-claude-agent-sdk already
does. Mechanical work; substantial scope.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>1 parent 5e2816c commit 2885e0c
1 file changed
Lines changed: 29 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1390 | 1390 | | |
1391 | 1391 | | |
1392 | 1392 | | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
| 1402 | + | |
| 1403 | + | |
| 1404 | + | |
1393 | 1405 | | |
1394 | 1406 | | |
1395 | 1407 | | |
| |||
1962 | 1974 | | |
1963 | 1975 | | |
1964 | 1976 | | |
| 1977 | + | |
| 1978 | + | |
| 1979 | + | |
| 1980 | + | |
| 1981 | + | |
| 1982 | + | |
| 1983 | + | |
| 1984 | + | |
| 1985 | + | |
| 1986 | + | |
| 1987 | + | |
| 1988 | + | |
| 1989 | + | |
| 1990 | + | |
| 1991 | + | |
| 1992 | + | |
| 1993 | + | |
1965 | 1994 | | |
1966 | 1995 | | |
1967 | 1996 | | |
| |||
0 commit comments