Sessions & resume

Every conversation is saved as a session, so you can close the terminal and pick up later with the full history. Sessions belong to the folder you started them in.

Pick up where you were

CommandOpens
syntic --continue (-c)The latest session in this folder.
syntic --resume (-r)In a terminal, the session picker opens inside the app. In scripts, with -p, --all-projects or --fork-session, a list of this folder’s sessions is printed instead (--all-projects lists every folder’s).
syntic --resume <id>That session. A name you gave it with -n works too.
syntic --from-pr 123The session that opened pull request 123 (number or URL).
/resume (also /continue) inside a sessionThe same picker. Type to filter; paste a pull request link to find the session behind it.

The picker shows each session’s name (or its first prompt), when it ran and where. Press Tab to switch between this folder and all folders, Ctrl+R to rename, Ctrl+D to delete.

When you quit, Syntic Code prints the exact command to come back:

Resume this session with: syntic --resume 7f3c2a90-…

A session that was compacted resumes from its latest summary plus the messages after it, so it starts quickly even after a long day. The full history stays in the saved transcript.

After a crash

If Syntic Code (or your computer) stops in the middle of a tool call, the session can still be resumed, and it tells you honestly what it knows. Before a tool starts, Syntic Code writes a line to the session’s operations journal (operations.jsonl, readable only by you); it records each step as prepared, approved, running, then finished.

When you resume:

The call wasIt is answered with
Running when the session stoppedOutcome unknown: what is known about the call (tool, target, kind of action), and a note to the agent to check the current state before repeating anything that cannot safely run twice, such as a git push, a deploy, a payment or a database migration.
Prepared or approved but not startedNot run: the session ended before this call was started, so it had no effect.
Read-only (a read or a search)Nothing special; it is safe to just do again.

Nothing is ever re-run for you on resume. Resuming the same session a second time reports nothing new.

Damaged session files

A saved session can be damaged, for example by a disk filling up or two programs writing at once. Syntic Code keeps going instead of failing:

  • On resume, it continues from the longest intact part of the history and prints one warning: line saying what was wrong. Nothing is deleted.
  • A file it could not read is set aside as a .corrupt copy, so you can look inside it later.

syntic doctor (section Saved sessions (this project)) and /doctor (also /checkup) list every damaged session and every set-aside copy for this project, each with its path and what to do: resume it with syntic --resume <id>, or delete the folder to discard it. A clean project shows “no damaged session files”.

Name your sessions

Names make the picker much easier to scan.

HowExample
At startsyntic -n "billing retry bug"
During/rename billing retry bug
Let the model name it/rename with no title

Sessions you do not name get an automatic title from their first messages.

Branch off

Explore another idea and keep the current path intact:

CommandDoes
/branch [name] (also /fork)Copies this conversation into a new session and continues there. The original stays untouched.
/branch --bg <task>Runs the copy in the background on <task>.
syntic --resume <id> --fork-sessionResumes under a fresh id; the old one is left as it was.
/background <task> (also /bg)Hands <task> to a background session that continues from this conversation, while you keep working here.

Start fresh

/clear starts a new, empty conversation in the same terminal. The previous one is saved and stays resumable; /clear <name> gives it a name on the way out.

Go back in time

  • Undo the last turn: /rollback.
  • Rewind to any earlier message, optionally restoring files too: Esc Esc on an empty prompt, or /rewind. See Checkpoints & rewind.
  • Resume from an earlier point: syntic --resume <id> --resume-session-at <message-id or N> keeps the transcript up to that message (or the first N messages) and continues from there. Files on disk are not changed.
  • Restore files only: syntic --resume <id> --rewind-files <message-id> puts the files back to how they were before that message and exits.

Share or keep a copy

CommandWrites
/exportThe conversation as Markdown, JSON or plain text (you choose).
/share [file]A Markdown copy for sharing, with likely secrets masked and your home folder shown as ~. Saved to ~/.syntic/shared/ unless you name a file. Nothing is uploaded.
/copyThe last reply to your clipboard.

To find the conversation behind a commit later, set "commitSessionTrailer": true. Commits Syntic Code makes then end with a Syntic-Session: <id> line you can pass to --resume.

Messages from other sessions

Your other open sessions (and their agents) can send this one a message; see Messaging between sessions for how to send one. What happens to a message that arrives depends on crossSessionInbound in your settings:

ValueBehavior
ask (default)The message waits for you to choose Run, Reply or Dismiss.
autoIt runs as your next prompt.
refuseIt is dropped and the sender is told it was refused.

dialogExpiry (seconds) dismisses a waiting message if you do not answer in time. While permission prompts are bypassed, messages always wait for you.

A syntic-cli://open?q=<text> link opens a session with the prompt already typed in, so runbooks and alerts can hand you a ready-made task. Nothing is sent until you press Enter. See Open a session from a link.

Where sessions are stored

Transcripts are saved in your system’s application data folder (on macOS, ~/Library/Application Support/ai.syntic.syntic/projects/), one folder per project, readable only by you. Change the location with SYNTIC_DATA_DIR.

ToUse
Save nothing for one runsyntic --no-session-persistence
Delete transcripts older than N days automatically"cleanupPeriodDays": N
Keep prompts out of ↑ historySYNTIC_SKIP_PROMPT_HISTORY=1
Remove everything stored about one project (sessions, MCP approvals, folder trust)syntic project purge [path] (--dry-run to preview)

Running a session in the background, so it keeps going after you close the terminal, is covered in Background sessions.