iiRecord
Agentic AI Atlas · ShellEnv (canonical)
hook-surface:shell-enva5c.ai
II.
HookSurface JSON

hook-surface:shell-env

Structured · live

ShellEnv (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:shell-env",
  "_kind": "HookSurface",
  "_file": "channels-hooks/hook-surfaces/canonical/missing-canonical-hooks.yaml",
  "_cluster": "channels-hooks",
  "attributes": {
    "eventName": "ShellEnv (canonical)",
    "displayName": "ShellEnv (canonical)",
    "kind": "canonical",
    "direction": "pre",
    "blocking": true,
    "family": "shell-hook",
    "payloadSchema": {
      "type": "object",
      "required": [
        "session_id",
        "requested_env"
      ],
      "properties": {
        "session_id": {
          "type": "string"
        },
        "requested_env": {
          "type": "object",
          "description": "Environment variable map the agent intends to expose to the next tool subprocess."
        },
        "cwd": {
          "type": "string"
        }
      }
    },
    "description": "Fires before the runtime materializes the environment for a shell tool\ninvocation. Subscribers can inject, redact, or veto env vars. Used to\nenforce secret-handling policy + capability profiles. Native\nequivalents: claude-code / opencode `ShellEnv`.\n"
  },
  "outgoingEdges": [],
  "incomingEdges": [
    {
      "from": "agent-runtime-impl:claude-code.runtime@1.x",
      "to": "hook-surface:shell-env",
      "kind": "exposes",
      "attributes": {}
    },
    {
      "from": "hook-mapping:shell-env-opencode",
      "to": "hook-surface:shell-env",
      "kind": "maps_hook",
      "attributes": {}
    },
    {
      "from": "hook-mapping:shell-env-gemini",
      "to": "hook-surface:shell-env",
      "kind": "maps_hook",
      "attributes": {}
    }
  ]
}