iiRecord
Agentic AI Atlas · SessionIdle (canonical)
hook-surface:session-idlea5c.ai
II.
HookSurface JSON

hook-surface:session-idle

Structured · live

SessionIdle (canonical) json

Inspect the normalized record payload exactly as the atlas UI reads it.

File · channels-hooks/hook-surfaces/canonical/missing-canonical-hooks.yamlCluster · channels-hooks
Record JSON
{
  "id": "hook-surface:session-idle",
  "_kind": "HookSurface",
  "_file": "channels-hooks/hook-surfaces/canonical/missing-canonical-hooks.yaml",
  "_cluster": "channels-hooks",
  "attributes": {
    "eventName": "SessionIdle (canonical)",
    "displayName": "SessionIdle (canonical)",
    "kind": "canonical",
    "direction": "observer",
    "blocking": false,
    "family": "observer",
    "payloadSchema": {
      "type": "object",
      "required": [
        "session_id",
        "idle_since_ms"
      ],
      "properties": {
        "session_id": {
          "type": "string"
        },
        "idle_since_ms": {
          "type": "integer",
          "description": "Milliseconds since the last user input or tool result."
        },
        "last_event_kind": {
          "type": "string",
          "description": "Kind of the last event before idle (e.g. text-deltas-complete, tool-result, user-prompt)."
        }
      }
    },
    "description": "Fires when a session has been quiet for a configured threshold. Used\nby orchestrators to dispatch keepalives, by reliability impls to\ndetect stalled loops, and by IDE integrations to dim idle agent\navatars. Native equivalents: opencode `SessionIdle`, claude-code\n`Notification` with `idle` qualifier.\n"
  },
  "outgoingEdges": [],
  "incomingEdges": [
    {
      "from": "agent-runtime-impl:claude-code.runtime@1.x",
      "to": "hook-surface:session-idle",
      "kind": "exposes",
      "attributes": {}
    },
    {
      "from": "hook-mapping:session-idle-gemini",
      "to": "hook-surface:session-idle",
      "kind": "maps_hook",
      "attributes": {}
    }
  ]
}