diff options
| author | sillylaird <sillyfanboy@gmail.com> | 2026-09-03 00:33:59 +0000 |
|---|---|---|
| committer | sillylaird <sillyfanboy@gmail.com> | 2026-09-03 00:33:59 +0000 |
| commit | 898b52edcb47bcb3e9d6106e74ca73e74ea01e70 (patch) | |
| tree | 85c6ee5ad58b860144551184d4cf86b560c62b91 /.agents/skills/hook-development/examples/validate-write.sh | |
| download | www-898b52edcb47bcb3e9d6106e74ca73e74ea01e70.tar.gz www-898b52edcb47bcb3e9d6106e74ca73e74ea01e70.zip | |
Diffstat (limited to '.agents/skills/hook-development/examples/validate-write.sh')
| -rw-r--r-- | .agents/skills/hook-development/examples/validate-write.sh | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/.agents/skills/hook-development/examples/validate-write.sh b/.agents/skills/hook-development/examples/validate-write.sh new file mode 100644 index 0000000..e665193 --- /dev/null +++ b/.agents/skills/hook-development/examples/validate-write.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# Example PreToolUse hook for validating Write/Edit operations +# This script demonstrates file write validation patterns + +set -euo pipefail + +# Read input from stdin +input=$(cat) + +# Extract file path and content +file_path=$(echo "$input" | jq -r '.tool_input.file_path // empty') + +# Validate path exists +if [ -z "$file_path" ]; then + echo '{"continue": true}' # No path to validate + exit 0 +fi + +# Check for path traversal +if [[ "$file_path" == *".."* ]]; then + echo '{"hookSpecificOutput": {"permissionDecision": "deny"}, "systemMessage": "Path traversal detected in: '"$file_path"'"}' >&2 + exit 2 +fi + +# Check for system directories +if [[ "$file_path" == /etc/* ]] || [[ "$file_path" == /sys/* ]] || [[ "$file_path" == /usr/* ]]; then + echo '{"hookSpecificOutput": {"permissionDecision": "deny"}, "systemMessage": "Cannot write to system directory: '"$file_path"'"}' >&2 + exit 2 +fi + +# Check for sensitive files +if [[ "$file_path" == *.env ]] || [[ "$file_path" == *secret* ]] || [[ "$file_path" == *credentials* ]]; then + echo '{"hookSpecificOutput": {"permissionDecision": "ask"}, "systemMessage": "Writing to potentially sensitive file: '"$file_path"'"}' >&2 + exit 2 +fi + +# Approve the operation +exit 0 |
