CLI adapters

One preview engine. Different hook payloads.

Adapters normalize host-specific JSON into the same internal action model, then shared rules write the plain-English preview.

Want the raw config snippets?View on GitHub

Claude Code

Claude Code command hooks can pipe JSON into notatechbro. The older change-preview alias remains supported for existing configs. Human text goes to stderr by default so stdout stays available for host protocols.

{
  "tool_name": "Bash",
  "tool_input": { "command": "npm install" },
  "cwd": "/path/to/project"
}

Hermes

Hermes can call the CLI from a pre-tool hook. The tool stays observer-only and does not block.

{
  "hook_event_name": "pre_tool_call",
  "tool_name": "terminal",
  "tool_input": { "command": "git push" }
}

Codex CLI

Codex CLI 0.134+ supports Claude-style lifecycle hooks from ~/.codex/config.toml. Keep NotATechBro observer-only: default mode writes human text to stderr and leaves stdout empty.

[features]
hooks = true

[[hooks.PreToolUse]]
matcher = "Bash"
hooks = [{ type = "command", command = "notatechbro", timeout = 5 }]

Do not use notatechbro --json for Codex yet; Codex has its own structured hook response schema for blocking or mutating calls.