mirror of
https://github.com/Donchitos/Claude-Code-Game-Studios
synced 2026-04-21 13:27:18 +00:00
Fix log-agent hooks reading wrong field — audit trail always logged "unknown" (#21)
Both SubagentStart/SubagentStop hooks were extracting `.agent_name` from the hook payload, but Claude Code emits the agent name in `agent_type`. This caused every audit log entry to fall through to the "unknown" fallback, making the entire agent audit trail useless. Fix: swap `.agent_name` -> `.agent_type` in both the jq path and the grep/sed fallback for systems without jq. Log output format is unchanged so existing audit logs remain valid. Bug reported and fix authored by @bobloy in issue #20: https://github.com/Donchitos/Claude-Code-Game-Studios/issues/20 Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
dd2769a580
commit
666e0fcb5a
2 changed files with 17 additions and 8 deletions
|
|
@ -2,16 +2,21 @@
|
|||
# Claude Code SubagentStop hook: Log agent completion for audit trail
|
||||
# Tracks when agents finish and their outcome
|
||||
#
|
||||
# Input schema (SubagentStop):
|
||||
# { "agent_id": "agent-abc123", "agent_name": "game-designer", ... }
|
||||
# Input schema (SubagentStop) — per Claude Code hooks reference:
|
||||
# { "session_id": "...", "agent_id": "agent-abc123", "agent_type": "Explore",
|
||||
# "agent_transcript_path": "...", "last_assistant_message": "...", ... }
|
||||
#
|
||||
# The agent name is in `agent_type`, NOT `agent_name`. Reading `.agent_name`
|
||||
# returns null on every invocation, so the fallback "unknown" is always used
|
||||
# and the audit trail captures nothing useful.
|
||||
|
||||
INPUT=$(cat)
|
||||
|
||||
# Parse agent name -- use jq if available, fall back to grep
|
||||
if command -v jq >/dev/null 2>&1; then
|
||||
AGENT_NAME=$(echo "$INPUT" | jq -r '.agent_name // "unknown"' 2>/dev/null)
|
||||
AGENT_NAME=$(echo "$INPUT" | jq -r '.agent_type // "unknown"' 2>/dev/null)
|
||||
else
|
||||
AGENT_NAME=$(echo "$INPUT" | grep -oE '"agent_name"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/"agent_name"[[:space:]]*:[[:space:]]*"//;s/"$//')
|
||||
AGENT_NAME=$(echo "$INPUT" | grep -oE '"agent_type"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/"agent_type"[[:space:]]*:[[:space:]]*"//;s/"$//')
|
||||
[ -z "$AGENT_NAME" ] && AGENT_NAME="unknown"
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -2,16 +2,20 @@
|
|||
# Claude Code SubagentStart hook: Log agent invocations for audit trail
|
||||
# Tracks which agents are being used and when
|
||||
#
|
||||
# Input schema (SubagentStart):
|
||||
# { "agent_id": "agent-abc123", "agent_name": "game-designer", ... }
|
||||
# Input schema (SubagentStart) — per Claude Code hooks reference:
|
||||
# { "session_id": "...", "agent_id": "agent-abc123", "agent_type": "Explore", ... }
|
||||
#
|
||||
# The agent name is in `agent_type`, NOT `agent_name`. Reading `.agent_name`
|
||||
# returns null on every invocation, so the fallback "unknown" is always used
|
||||
# and the audit trail captures nothing useful.
|
||||
|
||||
INPUT=$(cat)
|
||||
|
||||
# Parse agent name -- use jq if available, fall back to grep
|
||||
if command -v jq >/dev/null 2>&1; then
|
||||
AGENT_NAME=$(echo "$INPUT" | jq -r '.agent_name // "unknown"' 2>/dev/null)
|
||||
AGENT_NAME=$(echo "$INPUT" | jq -r '.agent_type // "unknown"' 2>/dev/null)
|
||||
else
|
||||
AGENT_NAME=$(echo "$INPUT" | grep -oE '"agent_name"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/"agent_name"[[:space:]]*:[[:space:]]*"//;s/"$//')
|
||||
AGENT_NAME=$(echo "$INPUT" | grep -oE '"agent_type"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/"agent_type"[[:space:]]*:[[:space:]]*"//;s/"$//')
|
||||
[ -z "$AGENT_NAME" ] && AGENT_NAME="unknown"
|
||||
fi
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue