Agents
Paths below are the defaults. Point any of them somewhere else with the environment variable in the last column. A missing directory is skipped. ai9s only reads session stores. It does not read credential files.
| Agent | What is read | Resume | Delete | Override |
|---|---|---|---|---|
claude | $CLAUDE_CONFIG_DIR/projects/**/*.jsonl | claude --resume <id> | the transcript file | CLAUDE_CONFIG_DIR |
codex | $CODEX_HOME/sessions/**/rollout-*.jsonl | codex resume <id> | the rollout file | CODEX_HOME |
copilot | $COPILOT_HOME/session-state/<id>/ | copilot --resume <id> | that session directory | COPILOT_HOME |
grok | $GROK_HOME/sessions/**/summary.json | grok --resume <id> | that session directory, and its active-session and metadata entries | GROK_HOME |
antigravity | $GEMINI_HOME/antigravity-cli/history.jsonl | agy --conversation <id> | that conversation's lines | GEMINI_HOME |
gemini | $GEMINI_HOME/tmp/<project>/chats/session-*.json | gemini --session-file <path> | that chat file | GEMINI_HOME |
cursor | $CURSOR_HOME/projects/**/agent-transcripts/<id>/<id>.jsonl | cursor-agent --resume <id> (or agent) | the transcript file | CURSOR_HOME |
opencode | $XDG_DATA_HOME/opencode/opencode.db | opencode --session <id> | opencode session delete <id> | OPENCODE_DB |
hermes | $HERMES_HOME/state.db and profiles/<name>/state.db | hermes --resume <id> (-p <profile> for a named profile) | hermes sessions delete <id> --yes | HERMES_HOME |
openclaw | $OPENCLAW_STATE_DIR/agents/<id>/agent/openclaw-agent.sqlite | openclaw resume <session-key> | openclaw sessions delete <key> --yes | OPENCLAW_STATE_DIR, else OPENCLAW_HOME |
junie | $JUNIE_HOME/sessions/session-*/transcript.md | junie --resume --session-id=<id> | that session directory | JUNIE_HOME |
jules | $JULES_HOME/sessions.json or sessions.txt | jules teleport <id> | that row, or the cloud session when JULES_API_KEY is set | JULES_HOME |
goose | $GOOSE_HOME/sessions/sessions.db | goose session --resume --session-id <id> | goose session remove --session-id <id> | GOOSE_HOME |
cline | $CLINE_HOME/data/state/taskHistory.json | cline task open <id> | rewrite the history, then remove the task directory | CLINE_HOME |
aider | .aider.chat.history.md under the configured roots | aider --restore-chat-history | that history file | AIDER_CHAT_ROOTS, AIDER_HOME, AIDER_CHAT_HISTORY |
kiro | kiro-cli data.sqlite3 (conversations_v2) | kiro-cli chat --resume-id <id> | that conversation; the shell history table stays | KIRO_CLI_DB, else KIRO_HOME |
Yolo
ai9s resume --yolo adds a flag only when the agent documents one:
- Claude and Antigravity:
--dangerously-skip-permissions - Grok:
--always-approve - Copilot:
--allow-all-tools - Cursor:
--force - Hermes:
--yolo - Junie:
--brave - Cline:
--yoloontask open - Kiro:
--trust-all-toolsbefore the subcommand
Codex, Gemini, OpenCode, OpenClaw, Jules, Goose, and Aider resume without an extra approval flag.
Read limits
- Subagent transcripts are skipped.
- Kiro's shell
historytable is skipped. Resume useskiro-cli, which is separate from the Kiro IDE. - Goose resume and delete need the
goosecommand onPATH. - Jules listing talks to Google only when
AI9S_JULES_REMOTE=1. Otherwise ai9s reads the local snapshot and does not runjules. Deleting a remote session uses the Jules API whenJULES_API_KEYis set. - Aider does not walk the home directory unless
AIDER_SCAN_HOME=1. - OpenClaw's working directory is the workspace recorded on the session. ai9s does not read OpenClaw credentials.
What delete removes
Grok delete removes the one session directory whose name is that session id, when summary.json is a regular file inside it. It also drops that id from active_sessions.json and client-state/session-meta.json when those files exist. The project prompt_history.jsonl stays.
Gemini delete removes that one session-*.json file under tmp/<project>/chats/, after the file's sessionId matches. Project caches and projects.json stay.
Kiro delete removes that conversation from conversations_v2 and, when the same key is present, from conversations. The shell history table is left as it is. The database file stays.
Jules keeps a local list in sessions.json or sessions.txt. Delete rewrites that file without the chosen id. The jules command has no delete subcommand. A remote session is deleted with the Jules API when JULES_API_KEY is set. Without that key, the cloud session is left in place and delete says so. ai9s does not read the Jules keyring.
Antigravity stores every conversation in one history.jsonl. Delete rewrites that file without the chosen id. Cline delete rewrites taskHistory.json first, then removes that task's directory. OpenCode, Hermes, OpenClaw, and Goose delete through each CLI. Other deletes remove a single transcript or Aider history file, or one Copilot session-state or Junie session-* directory, and only when the path is still inside that agent's session root.
Not indexed yet
These need a stable file layout and a real resume command before an adapter should claim them: Copilot in VS Code, Kimi, Qwen, Pi, Crush, Vibe, and Prime. Adding one is described in Contributing.
Marks
Describe and the all-session stats show a two-letter mark: Ca claude, Cx codex, Cp copilot, Gk grok, Ag antigravity, Ge gemini, Cu cursor, Oc opencode, He hermes, Oa openclaw, Jn junie, Ju jules, Go goose, Cl cline, Ai aider, Ki kiro. An unknown agent is ??. The session list does not have that column.