Skip to main content
seri has one entry point. Running it opens a full-screen terminal session, and everything you do with seri happens inside that session as a slash command. There are no subcommands. /login, /config, /permissions and /usage are session commands rather than shell verbs.

Flags

Flags work in any position. Everything after -- is treated as text rather than as flags, which is the documented escape when you need to pass something flag-shaped.
--dangerously-skip-permissions turns off the approval prompt for the whole run. It is for attended, high-trust work. Cycling to auto with /mode inside the session is the same idea, with a keystroke to get back out of it.

While it starts

seri shows a splash while it loads the model catalog and prepares the session. You can start typing your first task there. What you type is queued and submitted once the session is ready, so a slow catalog fetch never costs you the thought you were mid-way through.

Exit codes

The line between 0 and 1 is whether the run accomplished anything, not whether anything was printed.
  • A turn that ends with no tool call exits 0, unless every write it attempted was declined and nothing ran, which exits 1.
  • A read-only block is not a failure. It still exits 0.
  • The turn budget running out, and repeated denials, both exit 1.
  • Cancelling with Ctrl-C ends the turn as aborted rather than as an error, and leaves the session resumable.
  • Quitting with /exit or Ctrl-D while a turn is in flight exits 1, because the turn did not finish.

Sessions

Every session is a file on disk. --continue opens the most recent one and --resume <id> opens a specific one, both with the conversation intact. /clear inside a session starts a new one rather than deleting the old one, so a session you cleared is still reachable with --resume.
The checkpoint store keeps the 20 most recently touched sessions per project. An old session’s conversation stays on disk indefinitely, but the checkpoint history behind its /undo and /rewind can be pruned once 20 newer sessions exist in the same project.

Profiles

--profile <name> swaps the whole profile root. Config, keys, sessions, checkpoints, memory, agents, skills, rules, MCP servers and hooks all come from ~/.seri/<name>/ instead of ~/.seri/, and a named profile never falls back to the default root. SERI_PROFILE sets the same thing, and the flag wins over it. /profile new <name> creates one from inside a session. See Profiles for what a profile is good for.