Stats
Actions
Tags
From archive-first
Blocks file writes and bash commands until a 'springfield hook-guard' check passes, enforcing a pre-commit guard on every Write/Edit/Bash call. Runs bash, modifies files.
1 event · 3 hooks
Safety signals detected in this hook configuration
Where this hook configuration is defined
Defined in hooks/hooks.json
Event handlers and matchers — expand Raw Configuration for the full JSON
Bash[ -f ~/.cache/archive-first/disabled ] && exit 0; COMMAND=$(jq -r '.tool_input.command // empty'); if echo "$COMMAND" | tr ';' '\n' | sed 's/&&/\n/g' | sed 's/||/\n/g' | grep -E '(rm|rmdir|unlink)' | grep -qE 'archived'; then jq -n '{hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:"Blocked: destructive command targeting archived/ directory. Use /archive-first:archived-unlock to disable protection first."}}'; else exit 0; fiWrite[ -f ~/.cache/archive-first/disabled ] && exit 0; FILE_PATH=$(jq -r '.tool_input.file_path // empty'); if echo "$FILE_PATH" | grep -qE '/archived/'; then jq -n '{hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:"Blocked: cannot write to archived/ directory. Use /archive-first:archived-unlock to disable protection first."}}'; else exit 0; fiEdit[ -f ~/.cache/archive-first/disabled ] && exit 0; FILE_PATH=$(jq -r '.tool_input.file_path // empty'); if echo "$FILE_PATH" | grep -qE '/archived/'; then jq -n '{hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:"Blocked: cannot edit files in archived/ directory. Use /archive-first:archived-unlock to disable protection first."}}'; else exit 0; finpx claudepluginhub psychquant/psychquant-claude-plugins --plugin archive-first