Session inspection

The session stats, session query and session search commands read journaled sessions without resuming them. stats reports what one session cost and where its time went, query prints the tool calls it made with their answers, and search finds sessions across the store by agent, model, caller, status, time and prompt.

The commands read the same store as session ls and session show: the file backend under --state-dir by default, or the backend a configuration names with --config. They read a journal without taking its lock, so they work against a session that is still running. See Session snapshots for where sessions are stored.

Note

A session journaled before records carried a time and the agent’s name reports no timing and no agent, and search --identity leaves it out. Older journals covers both.

$ fisk session stats 33Fp8QnWb3aZkR1vT0yXcLmE2sD
Session 33Fp8QnWb3aZkR1vT0yXcLmE2sD:

         Agent: nats-ops
         Model: claude-opus-4-8
        Status: completed
       Created: 2026-09-22 11:14:03
         Ended: 2026-09-22 11:14:24
    Iterations: 6 (at most 20 per turn)
    Wall clock: 21.81s (creation to the last journal record)
        Tokens: 41993 of 200000 budget (3790 in / 883 out / 33420 cache read / 3900 cache write)

  Model responses:

    โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
    โ”‚ Iteration โ”‚ In    โ”‚ Out โ”‚ Cache read โ”‚ Cache write โ”‚ Thinking โ”‚ Total โ”‚
    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
    โ”‚ 0         โ”‚ 2,140 โ”‚ 96  โ”‚ 0          โ”‚ 3,900       โ”‚ 40       โ”‚ 6,136 โ”‚
    โ”‚ 1         โ”‚ 180   โ”‚ 142 โ”‚ 6,040      โ”‚ 0           โ”‚ 60       โ”‚ 6,362 โ”‚
    โ”‚ 2         โ”‚ 410   โ”‚ 88  โ”‚ 6,220      โ”‚ 0           โ”‚ 0        โ”‚ 6,718 โ”‚
    โ”‚ 3         โ”‚ 520   โ”‚ 74  โ”‚ 6,630      โ”‚ 0           โ”‚ 0        โ”‚ 7,224 โ”‚
    โ”‚ 4         โ”‚ 230   โ”‚ 71  โ”‚ 7,150      โ”‚ 0           โ”‚ 0        โ”‚ 7,451 โ”‚
    โ”‚ 5         โ”‚ 310   โ”‚ 412 โ”‚ 7,380      โ”‚ 0           โ”‚ 120      โ”‚ 8,102 โ”‚
    โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

  Tools:

    โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
    โ”‚ Tool             โ”‚ Kind        โ”‚ Calls โ”‚ Dispatched โ”‚ Not run โ”‚ Unanswered โ”‚ Errors โ”‚ Time  โ”‚
    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
    โ”‚ consumer_info    โ”‚ application โ”‚ 2     โ”‚ 2          โ”‚ 0       โ”‚ 0          โ”‚ 1      โ”‚ 690ms โ”‚
    โ”‚ consumer_ls      โ”‚ application โ”‚ 1     โ”‚ 1          โ”‚ 0       โ”‚ 0          โ”‚ 0      โ”‚ 550ms โ”‚
    โ”‚ knowledge_search โ”‚ builtin     โ”‚ 1     โ”‚ 1          โ”‚ 0       โ”‚ 0          โ”‚ 0      โ”‚ 2.45s โ”‚
    โ”‚ stream_info      โ”‚ application โ”‚ 1     โ”‚ 1          โ”‚ 0       โ”‚ 0          โ”‚ 0      โ”‚ 400ms โ”‚
    โ”‚ stream_ls        โ”‚ application โ”‚ 1     โ”‚ 1          โ”‚ 0       โ”‚ 0          โ”‚ 0      โ”‚ 1.20s โ”‚
    โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

This session took six model responses and six tool calls over 22 seconds. One consumer_info call returned an error, and knowledge_search took the most time. session query shows that call and its answer:

$ fisk session query 33Fp8QnWb3aZkR1vT0yXcLmE2sD --errors
Session 33Fp8QnWb3aZkR1vT0yXcLmE2sD:

  Call 1:

           Tool: consumer_info
        Call ID: toolu_05
      Iteration: 3
         Status: error

    Input:

      {
        "stream": "ORDERS",
        "consumer": "SHIPING"
      }

    Answer:

      nats: error: consumer not found

Cost and timing

session stats <id> reports one session: its frame, the tokens of each model response, and a row per tool it called.

ItemDescription
AgentThe agent identity that started the session, left out when the journal records none
CallerWho a channel recorded as asking for the session, left out when there is none
ModelThe model the session ran against
Statusopen, or the reason the session ended
CreatedWhen the session was created
EndedWhen the session ended, left out for an open session
IterationsModel responses across the whole session, against the per-turn cap when one was set
Wall clockCreation to the last journal record
TokensTotal against the token budget, then the split by tier

The iteration cap applies to each turn on its own, so a conversation of several turns can show more responses than the cap. The wall clock runs to the last record journaled, so for a chat conversation continued over several days it includes the time between turns.

The token total counts uncached input, output, cache reads and cache writes, weighed the same, which is what a token budget counts. The Thinking column is the part of Out the model spent reasoning and is not added to the total a second time.

Tools table

ColumnDescription
ToolThe tool the model named
KindThe provider that answered: application, builtin, remote, custom, mcp or unknown
CallsCalls the model made to the tool
DispatchedAnswered calls that were handed to the tool’s provider
Not runAnswered calls that were not handed to the provider, such as a call a policy denied or the operator refused
UnansweredCalls with no result yet
ErrorsAnswers that came back as an error
TimeTotal time of the tool’s timed calls

A result journaled before the provider kind was recorded cannot say whether the call ran. It counts in neither Dispatched nor Not run, and its kind shows as unknown. One marked as a remote call in that older format shows as remote and counts as dispatched.

Reading the Time column

A call’s duration is the gap between the record that ended the call and the record journaled immediately before it. The agent dispatches tools one at a time, so no other tool ran in that gap.

The gap also holds anything the run did around the call without journaling it, such as policy hooks and waiting for an operator to answer an approval prompt. A tool behind a confirmation can therefore show the operator’s response time as well as its own.

A call that deferred its answer is timed to the deferral. The time until the answer arrived is not counted, since that depends on whoever supplies it. An approval given while the run was suspended is not counted either.

The Time column sums the durations of a tool’s calls. When only some of the calls could be timed, it says how many it covers, as in 1.10s (1 of 2 calls), and a dash means it covers none. Lines below the table say why:

LineMeaning
UntimedCalls that ended with a record carrying no time
UnansweredCalls with neither a result nor a deferral, such as one a suspended run left behind

JSON

--json renders the same report as one JSON document. The example is trimmed to one model response and one tool.

{
  "run_id": "33Fp8QnWb3aZkR1vT0yXcLmE2sD",
  "agent": "nats-ops",
  "model": "claude-opus-4-8",
  "created": "2026-09-22T09:14:03Z",
  "updated": "2026-09-22T09:14:24.81Z",
  "terminal": "completed",
  "ended": "2026-09-22T09:14:24.81Z",
  "iterations": 6,
  "max_iterations": 20,
  "max_tokens": 200000,
  "tokens": {
    "in_tokens": 3790,
    "out_tokens": 883,
    "cache_read_tokens": 33420,
    "cache_create_tokens": 3900,
    "thinking_tokens": 220
  },
  "responses": [
    {
      "iteration": 0,
      "time": "2026-09-22T09:14:05.1Z",
      "tokens": {
        "in_tokens": 2140,
        "out_tokens": 96,
        "cache_read_tokens": 0,
        "cache_create_tokens": 3900,
        "thinking_tokens": 40
      }
    }
  ],
  "tools": [
    {
      "tool": "consumer_info",
      "kinds": [
        "application"
      ],
      "calls": 2,
      "dispatched": 2,
      "undispatched": 0,
      "unanswered": 0,
      "errors": 1,
      "duration_ns": 690000000,
      "timed": 2,
      "untimed": 0
    }
  ]
}

terminal is absent for an open session. duration_ns is in nanoseconds, timed is how many calls it covers, and untimed counts the calls that ended with no time recorded. undispatched is the Not run column. agent, caller, updated, ended and each response’s time are left out when the journal does not record them.

Tool calls

session query <id> prints the tool calls of a session in the order they were made, each paired with the answer it got. With no flags it prints every call.

$ fisk session query 33Fp8QnWb3aZkR1vT0yXcLmE2sD --iteration 1 --calls-only
Session 33Fp8QnWb3aZkR1vT0yXcLmE2sD:

  Call 1:

           Tool: stream_info
        Call ID: toolu_02
      Iteration: 1

    Input:

      {
        "stream": "ORDERS"
      }

  Call 2:

           Tool: consumer_ls
        Call ID: toolu_03
      Iteration: 1

    Input:

      {
        "stream": "ORDERS"
      }

Each call shows the tool, the call id, the loop iteration that made it and, unless --calls-only is given, its status: answered, error or no answer yet. A call that deferred its answer also shows a Deferred line with what the tool said it is waiting on. Input and answers that are JSON are indented, and any other answer, such as a command’s output, prints as it is.

FlagDescription
--tool NAMESelects the calls to this tool, matched exactly; repeat to select several tools
--iteration NSelects the calls made at this loop iteration
--errorsSelects the calls whose answer is an error
--calls-onlyPrints the calls without their answers
--results-onlyPrints only the answers, leaving out calls nothing has answered
--input-match PATTERNSelects the calls whose input JSON matches this regular expression
--output-match PATTERNSelects the calls whose answer matches this regular expression
--jsonRenders the selected calls as one JSON document

Every filter given must match. --calls-only and --results-only cannot be combined. --input-match is applied to the input JSON as journaled, which a model usually sends compact: "consumer":"SHIP matches both consumer_info calls of this session, and a pattern holding the spaces of the indented form does not. A session with no matching calls prints No matching calls.

JSON

{
  "run_id": "33Fp8QnWb3aZkR1vT0yXcLmE2sD",
  "calls": [
    {
      "iteration": 3,
      "tool_use_id": "toolu_05",
      "tool": "consumer_info",
      "input": {
        "stream": "ORDERS",
        "consumer": "SHIPING"
      },
      "time": "2026-09-22T09:14:17.1Z",
      "answer": {
        "tool_use_id": "toolu_05",
        "result": {
          "tool_use_id": "toolu_05",
          "content": "nats: error: consumer not found",
          "is_error": true
        },
        "kind": "application",
        "dispatched": true
      },
      "answer_time": "2026-09-22T09:14:17.38Z"
    }
  ]
}

time is when the model response holding the call was journaled and answer_time when the answer was. answer is the result record as journaled, so content holds the whole answer. A call that deferred carries a deferred object, and a call with no answer has no answer. --calls-only leaves out answer and answer_time, and --results-only leaves out input. calls is an empty list when nothing matches.

Finding sessions

session search lists the sessions in the store that match every filter given, newest first. It prints the columns of session ls, and adds an Agent, Caller or Created column when a filter on that field is given.

$ fisk session search --status completed --since 2026-09-01
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ ID                          โ”‚ Model           โ”‚ Status    โ”‚ Created             โ”‚ Updated             โ”‚ Prompt                                              โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 33Fp8QnWb3aZkR1vT0yXcLmE2sD โ”‚ claude-opus-4-8 โ”‚ completed โ”‚ 2026-09-22 11:14:03 โ”‚ 2026-09-22 11:14:24 โ”‚ report on the ORDERS stream and any consumers withโ€ฆ โ”‚
โ”‚ 2yKd9TqWm4RbX7cNz1LhVs0PfGe โ”‚ claude-opus-4-8 โ”‚ completed โ”‚ 2026-09-13 11:14:03 โ”‚ 2026-09-13 11:14:34 โ”‚ list the consumers on EVENTS                        โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
FlagDescription
--identity AGENTSelects the sessions of this agent; a session journaled before the agent was recorded carries none and is left out
--model MODELSelects the sessions run against this model
--caller CALLERSelects the sessions a channel recorded this caller for
--status STATUSSelects the sessions with this status: open, completed, suspended, error, budget or max_iterations
--since WHENSelects the sessions created at or after this time
--until WHENSelects the sessions created before this time
--match PATTERNSelects the sessions whose prompt matches this regular expression
--jsonRenders the matching sessions as one JSON document

--since and --until take a duration counted back from now (24h, 7d), a date taken as local midnight (2026-09-01), or an RFC3339 time. --status open selects every session with no ending: one still running, one with a turn in flight, and one that journaled something after it last ended, such as a chat conversation that was continued. --model, --caller and --identity compare exactly. A search that matches nothing prints No sessions matched.

JSON

{
  "runs": [
    {
      "run_id": "33Fq1cVx7MhN0bTe4KpWz9RgYuA",
      "agent": "nats-ops",
      "caller": "alice",
      "model": "claude-opus-4-8",
      "status": "open",
      "created": "2026-09-23T11:14:03Z",
      "updated": "2026-09-23T11:14:05.9Z",
      "prompt": "which streams have no consumers?"
    },
    {
      "run_id": "33Fp8QnWb3aZkR1vT0yXcLmE2sD",
      "agent": "nats-ops",
      "model": "claude-opus-4-8",
      "status": "completed",
      "created": "2026-09-22T09:14:03Z",
      "updated": "2026-09-22T09:14:24.81Z",
      "ended": "2026-09-22T09:14:24.81Z",
      "prompt": "report on the ORDERS stream and any consumers with pending messages"
    }
  ],
  "no_agent_excluded": 1
}

This is session search --identity nats-ops --json. status is open or the reason the session ended, and prompt holds the whole prompt, which the table trims. agent, caller, model and ended are left out when a session has none. no_agent_excluded counts the sessions --identity left out only because they carry no agent, and is 0 without --identity. runs is an empty list when nothing matches.

Older journals

A journal written before records carried a time and the agent’s name still reads, with less to report.

session stats shows no Agent line, reports the wall clock as not recorded in this journal, and shows - in the Time column with an Untimed line below the table. Tokens, calls and errors are still reported. In its JSON the calls count in untimed with duration_ns at 0, and the JSON of session query leaves out time and answer_time. The file backend reports such a session’s updated time as the journal file’s modification time.

search --identity leaves out every session that carries no agent and says how many it left out:

$ fisk session search --identity nats-ops
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ ID                          โ”‚ Agent    โ”‚ Model           โ”‚ Status    โ”‚ Updated             โ”‚ Prompt                                              โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 33Fq1cVx7MhN0bTe4KpWz9RgYuA โ”‚ nats-ops โ”‚ claude-opus-4-8 โ”‚ open      โ”‚ 2026-09-23 13:14:05 โ”‚ which streams have no consumers?                    โ”‚
โ”‚ 33Fp8QnWb3aZkR1vT0yXcLmE2sD โ”‚ nats-ops โ”‚ claude-opus-4-8 โ”‚ completed โ”‚ 2026-09-22 11:14:24 โ”‚ report on the ORDERS stream and any consumers withโ€ฆ โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

1 more session matched every other filter but carries no agent, so --identity left it out. It was journaled before the agent was recorded.

The agent filter a channel applies to its own listing, such as the web channel’s, includes a session that carries no agent. --identity excludes it. To see such sessions from the command line, search without --identity or use session ls.