#!/usr/bin/env python3 """Claude SessionStart hook client for P1 ancestry evidence.""" from __future__ import annotations import json import os import socket import sys def main() -> None: # Consume the real Claude hook payload without recording transcript paths or # prompt content in the evidence artifact. hook_input = json.load(sys.stdin) conn = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) conn.connect(os.environ["GATE0_BROKER_SOCKET"]) conn.sendall((json.dumps({"action": "resolve-hook"}) + "\n").encode()) response = json.loads(conn.makefile("r", encoding="utf-8").readline()) conn.close() event_name = hook_input.get("hook_event_name") if response.get("decision") != "ACCEPT": print(f"Gate0 broker rejected {event_name} hook ancestry", file=sys.stderr) raise SystemExit(2) print( json.dumps( { "hookSpecificOutput": { "hookEventName": event_name, "additionalContext": "GATE0_P1_SUPPORTED_HOOK_ANCESTRY_ACCEPTED", } } ) ) if __name__ == "__main__": main()