Troubleshooting

Atlas error: Session not found or Message not found

Updated 6 min read

Atlas fails with Session not found: <id>, or Message not found: <id>, because message-v2 raises the storage NotFoundError when the session or message row is missing. From the CLI, a bad id fails earlier with Invalid session ID: <reason>, because the TUI entrypoint validates the session id shape first. The fix is to run `atlas session` to list real session ids and copy one, and to check the prefix, since ids are branded and must start with the session prefix.

Why does Atlas say Session not found

Atlas says Session not found: <id> because message-v2 raises the storage NotFoundError when the session row is missing. The same code path produces Message not found: <id> for a missing message row, so in the 2026 build both errors mean storage was queried and came back empty.

A NotFoundError is a storage answer, not a permissions problem or a crash. Atlas asked for the row named by that id and there was nothing there. Three situations produce it. The id is correct but the session was deleted, so nothing remains to resume. The id belongs to a different machine or a different install, so the row exists somewhere else. Or the id was copied from an old transcript or a stale note and no longer corresponds to anything. In every case the resolution starts with getting a real, current id rather than debugging the storage layer.

How to find a real Atlas session id

Run `atlas session` to list real session ids and copy 1 verbatim. That listing is the authoritative source, and copying rather than typing avoids both failures at once: Session not found: <id> from storage, and Invalid session ID: <reason> from the TUI entrypoint's shape validation.

Copy the id character for character. Atlas session ids are branded, meaning the string carries a prefix that identifies what kind of id it is, and the decoder checks that prefix before anything touches storage. Hand-typing an id, truncating it, or reconstructing it from memory is how developers end up with a value that looks plausible and decodes to nothing. If the session you want is not in the `atlas session` listing at all, it does not exist on this machine, and no id will retrieve it.

What does Invalid session ID mean in Atlas

Invalid session ID: <reason> means the Atlas TUI entrypoint rejected the id's shape before ever querying storage. Session ids are branded, so an id missing the session prefix fails the decoder. That is why a malformed id trips 1 error earlier than Session not found: <id>, which comes from storage.

The two errors sit at different layers, and the one you get tells you where the problem is. Invalid session ID: <reason> means the string did not decode, most often because the prefix is wrong: ids are branded, so a session id must start with the session prefix or the id decoder rejects it. Session not found: <id> means the string decoded fine and storage simply had no such row. Fixing a decode failure is about the shape of the id. Fixing a NotFoundError is about whether the session still exists at all.

How to fix a missing Atlas message id

For a Message not found: <id> error in Atlas, re-read the session transcript rather than reusing an id from an older run. message-v2 raises the storage NotFoundError when the message row is missing, and message ids from a previous session do not carry over to a new one.

Message ids are per-session artifacts. Pulling one out of yesterday's notes, a shell history line, or a script that hardcoded it will produce a NotFoundError as soon as the message row is gone or the session it belonged to was replaced. Re-read the transcript of the session you are actually working in and take the current id from there. If you are automating against the server API, resolve message ids at runtime from the session you just queried instead of persisting them across runs, since they are not stable handles to reuse later.

What to do when an Atlas session was deleted

If the Atlas session was deleted, start a new one: there is nothing to resume, and Session not found: <id> is the correct and final answer from storage. No id repair, prefix fix, or retry will bring back a session row that message-v2 reports as missing.

Accept the deletion and move forward. Your code is not lost with the session, because Atlas snapshots file changes as git patches so edits can be diffed and rolled back, and Atlas reads git branches, status, and diffs, and can stage and create commits on your behalf. The work that landed on disk is still on disk. Start a fresh session, point Atlas at the repository, and let it re-derive context. Verify the new session id by running `atlas session` and confirming it appears in the listing before you script against it.

How to fix it

  1. 01Run `atlas session` to list real session ids and copy one.
  2. 02Check the prefix: ids are branded, so a session id must start with the session prefix or the id decoder rejects it.
  3. 03If the session was deleted, start a new one; there is nothing to resume.
  4. 04For a message id, re-read the session transcript rather than reusing an id from an older run.

Frequently asked questions

how to fix Session not found in Atlas
Run `atlas session` to list real session ids and copy one verbatim. Session not found: <id> means message-v2 raised the storage NotFoundError because no session row matches that id.
what does Invalid session ID mean in Atlas
The TUI entrypoint validates the session id shape first and throws Invalid session ID: <reason> with the decode reason as the cause. The id did not decode, so storage was never queried.
why does my Atlas session id get rejected by the decoder
Atlas ids are branded, so a session id must start with the session prefix or the id decoder rejects it. Copy the id exactly as it appears in the `atlas session` listing.
can I resume a deleted Atlas session
No. If the session was deleted, start a new one; there is nothing to resume. Session not found: <id> is storage reporting that the row is gone.
how to fix Message not found in Atlas
Re-read the session transcript rather than reusing an id from an older run. message-v2 raises the storage NotFoundError when the message row is missing.
why does the same Atlas id fail differently from the CLI and the API
The TUI entrypoint validates the id shape first, so a malformed id fails there with Invalid session ID: <reason>. A well-formed id that has no row fails later in storage with Session not found: <id>.

Try Atlas in your terminal

The terminal-native AI coding agent. Free core, single binary.

Install Atlas

Related guides

Atlas vs Crush: Terminal AI Coding Agents in 2026

Comparing Atlas and Crush, two terminal AI coding agents for developers in 2026. Atlas offers robust planning and diffing, while Crush features LSP integration and mid-session model switching.

Atlas vs OpenHands: Terminal AI Coding Agents in 2026

Atlas and OpenHands comparison for 2026. Explore terminal-native TUI, self-hosting, code indexing, change review, and pricing models for AI coding agents.

Atlas with Command A Reasoning: Reasoning You Can Deploy On-Prem (2026)

Command A Reasoning gives Atlas a 256K window at $2.50 / $10 per Mtok, and Cohere lets you run it on-prem or in a VPC. Reasoning with no price premium.

Atlas with Qwen3.5 397B-A17B: The Qwen3.5 Flagship in 2026

Qwen3.5 397B-A17B is Alibaba's Qwen3.5 flagship: 397B total, 17B active, 256K tokens (262,144) of context, $0.60 per Mtok input and $3.60 per Mtok output, running in Atlas.

Atlas with Qwen3-Next 80B-A3B Instruct: Setup, Cost, and Tradeoffs in 2026

Run Atlas, the terminal-native AI coding agent, on Qwen3-Next 80B-A3B Instruct: 128K tokens (131,072) of context at $0.50 per Mtok input and $2.00 per Mtok output.

Atlas with Grok 4.20 Multi-Agent in 2026: Two Levels of Fan-Out

Grok 4.20 Multi-Agent orchestrates internal agents behind one model id, stacking with Atlas's own parallel subagents. 1,000,000 token context at $1.25 / $2.5 per Mtok.

Atlas with Qwen2.5 72B Instruct: The Flagship Dense Qwen in 2026

Qwen2.5 72B Instruct in Atlas: 128K tokens (131,072), $1.40 per Mtok input, $5.60 per Mtok output, openly published weights you can serve on your own vLLM.

Automate GitHub Issue and Pull Request Triage with Atlas (2026 Workflow)

How to automate GitHub issue and pull request triage with Atlas in 2026: the atlas github command checks the actor has admin or write permission before it does anything.

Browse this resource hub