SNAPSHOT_NOT_FOUND
The SNAPSHOT_NOT_FOUND error occurs when a Sandbox tries to resume from a snapshot that is gone — typically because the snapshot expired and was deleted, was deleted explicitly, or never existed. This most commonly surfaces on Sandbox.get({ name }) or any SDK call that auto-resumes a stopped persistent Sandbox, and on Sandbox.create({ source: { type: 'snapshot', snapshotId } }) when the referenced snapshot ID is invalid.
SNAPSHOT_NOT_FOUND:
Gone
I'm encountering an error and reviewing the docs at https://vercel.com/docs/errors/SNAPSHOT_NOT_FOUND.md to understand what's happening. Please help me resolve this by: 1. **Suggest the fix**: Analyze my codebase context and propose what needs to be changed to resolve this error. If you do not have access to my codebase, ask me for the codebase and try to fix the error based on the information you have. 2. **Explain the root cause**: Break down why this error occurred: - What was the code actually doing vs. what it needed to do? - What conditions triggered this specific error? - What misconception or oversight led to this? 3. **Teach the concept**: Help me understand the underlying principle: - Why does this error exist and what is it protecting me from? - What's the correct mental model for this concept? - How does this fit into the broader framework/language design? 4. **Show warning signs**: Help me recognize this pattern in the future: - What should I look out for that might cause this again? - Are there similar mistakes I might make in related scenarios? - What code smells or patterns indicate this issue? 5. **Discuss alternatives**: Explain if there are different valid approaches and their trade-offs My goal is to fix the immediate issue while building lasting understanding so I can avoid and resolve similar errors independently in the future.
To troubleshoot this error, follow these steps:
- Recreate the Sandbox with
getOrCreate:Sandbox.getOrCreatehandles this case for you: if the named Sandbox exists but its snapshot expired, the SDK deletes the stale Sandbox, re-creates it with the same name, and firesonCreate. Use it instead ofSandbox.getfor long-lived workflows. - Check the snapshot retention policy: If the snapshot was created automatically on shutdown, its TTL is governed by the Sandbox's
snapshotExpirationandkeepLastSnapshotssettings. Loosen them if your workflow needs to resume after long idle periods. - Verify the snapshot ID: For
Sandbox.create({ source: { type: 'snapshot', snapshotId } }), confirm the snapshot still exists withsandbox snapshots get <snapshot-id>orSnapshot.get({ snapshotId }). To spawn a new Sandbox from another Sandbox's current snapshot without tracking IDs, useSandbox.forkinstead. - Inspect the Sandbox dashboard: Navigate to the Sandboxes dashboard and review the Sandbox's snapshot history.
Was this helpful?