#!/bin/sh # Repo Manager coding-assistant provenance hook. This hook must never block Git. message_file=${1:-} [ -n "$message_file" ] && [ -f "$message_file" ] || exit 0 assistant=${ASSISTANT_NAME:-} model=${ASSISTANT_MODEL:-} process=${ASSISTANT_PROCESS:-} session=${ASSISTANT_SESSION:-} if [ -z "$assistant" ] && { [ "${CLAUDECODE:-}" = "1" ] || [ -n "${CLAUDE_CODE_SESSION_ID:-}" ]; }; then assistant=claude-code session=${session:-${CLAUDE_CODE_SESSION_ID:-}} process=${process:-${CLAUDE_PID:-}} fi if [ -z "$assistant" ] && { [ -n "${CODEX_SESSION_ID:-}" ] || [ -n "${CODEX_THREAD_ID:-}" ]; }; then assistant=codex session=${session:-${CODEX_SESSION_ID:-${CODEX_THREAD_ID:-}}} process=${process:-${CODEX_PID:-}} fi if [ -z "$assistant" ] && { [ -n "${GROK_SESSION_ID:-}" ] || [ "${GROKCODE:-}" = "1" ] || [ "${GROK_CODE:-}" = "1" ]; }; then assistant=grok session=${session:-${GROK_SESSION_ID:-}} process=${process:-${GROK_PID:-}} fi [ -n "$assistant" ] || exit 0 if [ -z "$model" ] && [ "$assistant" = "claude-code" ]; then claude_settings=${CLAUDE_SETTINGS_PATH:-${HOME:-}/.claude/settings.json} if [ -f "$claude_settings" ]; then model=$(sed -n 's/^[[:space:]]*"model"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' "$claude_settings" 2>/dev/null | head -1) fi fi if [ -z "$model" ] && [ "$assistant" = "codex" ]; then codex_config=${CODEX_HOME:-${HOME:-}/.codex}/config.toml if [ -f "$codex_config" ]; then model=$(sed -n 's/^[[:space:]]*model[[:space:]]*=[[:space:]]*"\([^"]*\)".*/\1/p' "$codex_config" 2>/dev/null | head -1) fi fi if [ -z "$model" ] && [ "$assistant" = "grok" ]; then model=${GROK_DEFAULT_MODEL:-} fi if [ -n "$process" ]; then case "$process" in *@*) : ;; *) process="$process@$(hostname 2>/dev/null || printf unknown-host)" ;; esac fi have_assistant_trailer=0 if grep -Eiq '^Assistant(-Model|-Process|-Session)?:[[:space:]]*' "$message_file" 2>/dev/null; then have_assistant_trailer=1 fi add_trailer() { token=$1 value=$2 [ -n "$value" ] || return 0 grep -Eiq "^${token}:[[:space:]]*" "$message_file" 2>/dev/null && return 0 if [ "$have_assistant_trailer" -eq 0 ]; then printf '\n' >>"$message_file" 2>/dev/null || return 0 have_assistant_trailer=1 fi printf '%s: %s\n' "$token" "$value" >>"$message_file" 2>/dev/null || true } add_trailer Assistant "$assistant" add_trailer Assistant-Model "$model" add_trailer Assistant-Process "$process" add_trailer Assistant-Session "$session" exit 0