← All features

Agent Sessions

Search past coding-agent sessions, with who said what kept on every turn

gno sessions reads the session stores that Codex, Claude Code, OpenClaw, and Hermes keep on your machine and imports the conversations you select into a dedicated archive: its own config file, its own named index, and one redacted JSONL file per thread. Every archived turn is labelled human or assistant and ends with a provenance line, so the turn where you chose SQLite and the turn where the agent proposed it stay distinguishable. Ordinary search, query, ask, get, and Context Capsules then work on the archive. A fresh install imports, watches, and schedules nothing; every import is a command you run until you switch on automation for a profile.

Use cases
Finding the turn where you picked a library, next to the proposal the agent made before it
Following one project across Codex and Claude Code sessions through its project tag
Keeping work and personal sessions in separate archive collections, each with its own egress policy
Handing an agent a past decision as cited evidence, then storing it as a fact on purpose

What it gives you

  • Manual by default: no watcher, no hook, and no schedule until you enable one, and discovery plus a dry run show what an import would write before it writes anything
  • A separate archive: the archive config and its named index only open together, so your curated search, gno update, and gno serve never read session turns unless you add the archive collection to them yourself
  • Who said what: speakers come from the harness's own structure, assistant turns stay labelled as assistant output, and a typed message that imitates a role stays quoted text of the real speaker
  • One provenance line per turn with the source, the native locator, and the turn ID, cited by gno:// URI like any other record
  • Filter by harness, project, speaker, or session kind with ordinary flags such as --author human, --category harness/codex, and --tags-all project/api
  • Tool calls and results, reasoning blocks, injected instructions, and compaction summaries are left out, as are prompts of programmatic runs, since a program may have written them
  • Credential redaction runs before anything is persisted, and you can add exact strings that must never appear. Redaction is best effort, so keep the archive local_only until you have reviewed it
  • Incremental reruns skip unchanged sessions, and every import returns a receipt that reports partial outcomes with counts and reason codes; receipts carry no session content or host paths
  • Codex and Claude Code parsers were checked against real local stores (Codex CLI 0.58 to 0.156.1, Claude Code 2.1.2xx); OpenClaw (v2026.9.6) and Hermes (v0.19.0 schema) were verified on synthetic fixtures only
  • Opt-in automation per profile: a Claude Code SessionEnd hook, verified with Claude Code 2.1.280, or an elapsed-cadence schedule marks work pending, and gno daemon on the archive imports it through the same importer
  • GNO never installs or starts a service, gno serve never runs schedules, and Codex, OpenClaw, and Hermes have no hook: import them by hand or on a daemon schedule
  • Nothing from a session becomes a remembered fact on its own; record a decision with gno remember and point its source at the turn
  • The same archive on MCP (gno_sessions_status, gno_sessions_import behind --enable-write), REST under /api/sessions, the SDK, and a /sessions page in the Web UI

Try it yourself

Representative commands and entry points. Full reference lives in the documentation.

gno sessions discover
gno --config ~/gno-sessions/archive.yml --index sessions sessions init --archive ~/gno-sessions/archive --collection sessions-work
gno --config ~/gno-sessions/archive.yml --index sessions sessions source add codex --harness codex --path ~/.codex/sessions --collection sessions-work
gno --config ~/gno-sessions/archive.yml --index sessions sessions import --source codex --dry-run
gno --config ~/gno-sessions/archive.yml --index sessions sessions import --source codex
gno --config ~/gno-sessions/archive.yml --index sessions search "sqlite" --author human --category harness/codex
gno --config ~/gno-sessions/archive.yml --index sessions sessions automation set claude --source claude-code
gno --config ~/gno-sessions/archive.yml --index sessions sessions automation enable claude --hook claude-code

Keep reading

Related features and docs.