careful
Safety guardrails for destructive commands. (gstack)
- License 许可
- MIT
- 所属仓库
- garrytan/gstack
- 最近更新
- 2026-11-13
- Stars
- ★ 14w
- Forks
- 2.1w
01 前言 Front Matter
- name
- careful
- hooks
- { "PreToolUse": [ { "hooks": [ { "type": "command", "command": "bash -c \"exec bash \\\"$HOME/.claude/skills/gstack/careful/bin/check-careful.sh\\\"\"", "statusMessage": "Checking for destructive commands..." } ], "matcher": "Bash" }, { "hooks": [ { "type": "command", "command": "bash -c \"exec bash \\\"$HOME/.claude/skills/gstack/careful/bin/check-careful.sh\\\"\"", "statusMessage": "Checking for destructive commands..." } ], "matcher": "PowerShell" } ] }
- version
- 0.1.0
- triggers
- [ "be careful", "warn before destructive", "safety mode" ]
- description
- Safety guardrails for destructive commands. (gstack)
- allowed-tools
- [ "Bash", "Read" ]
02 资源文件 34
- 脚本bin/check-careful.sh20.3 KB
- 脚本bin/hook-extract.sh10.5 KB
- 其他bin/mask-commit-message.awk4.9 KB
- 参考文档docs/WORKFLOW.md38.2 KB
- 脚本memory_integration.py7.7 KB
- 参考文档movie_project/screenplay_project/critiques/critique_1.md1.3 KB
- 参考文档movie_project/screenplay_project/drafts/draft_1.md888 B
- 参考文档movie_project/screenplay_project/final.md888 B
- 脚本orchestrator.py16.2 KB
- 其他pyproject.toml340 B
- 脚本run.sh2.1 KB
- 参考文档sanity_check_dream/screenplay_project/critiques/critique_1.md1.3 KB
- 参考文档sanity_check_dream/screenplay_project/drafts/draft_1.md1.1 KB
- 参考文档sanity_check_dream/screenplay_project/final.md1.1 KB
- 参考文档sanity_no_prompt/screenplay_project/critiques/critique_1.md1.3 KB
- 参考文档sanity_no_prompt/screenplay_project/drafts/draft_1.md1.1 KB
- 参考文档sanity_no_prompt/screenplay_project/final.md1.1 KB
- 脚本sanity.sh1009 B
- 脚本sanity/memory.sh712 B
- 脚本sanity/run_all.sh715 B
- 其他SKILL.md.tmpl4.8 KB
- 脚本story_models.py3.0 KB
- 参考文档story_output/critiques/critique_1.md1.3 KB
- 参考文档story_output/critiques/critique_2.md1.3 KB
- 参考文档story_output/drafts/draft_1.md403 B
- 参考文档story_output/drafts/draft_2.md403 B
- 参考文档story_output/final.md403 B
- 脚本story_phases.py25.6 KB
- 参考文档test_e2e_together/screenplay_project/critiques/critique_1.md1.3 KB
- 参考文档test_e2e_together/screenplay_project/drafts/draft_1.md660 B
- 参考文档test_e2e_together/screenplay_project/final.md660 B
- 参考文档test_prompt_fix/screenplay_project/critiques/critique_1.md1.3 KB
- 参考文档test_prompt_fix/screenplay_project/drafts/draft_1.md660 B
- 参考文档test_prompt_fix/screenplay_project/final.md660 B
03 SKILL.md 正文
<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly --> <!-- Regenerate: bun run gen:skill-docs -->
/careful — Destructive Command Guardrails
Safety mode is now active. Every Bash and PowerShell command will be checked for destructive patterns before running. If a destructive command is detected, you'll be warned and can choose to proceed or cancel.
GSTACK_STATE_ROOT=$(~/.claude/skills/gstack/bin/gstack-paths --get GSTACK_STATE_ROOT); : "${GSTACK_STATE_ROOT:?gstack-paths failed; reinstall with ./setup or /gstack-upgrade}"
mkdir -p "$GSTACK_STATE_ROOT"/analytics
echo '{"skill":"careful","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> "$GSTACK_STATE_ROOT"/analytics/skill-usage.jsonl 2>/dev/null || true
What's protected
| Pattern | Example | Risk |
|---|---|---|
rm -rf / rm -r / rm --recursive |
rm -rf /var/data |
Recursive delete |
DROP TABLE / DROP DATABASE |
DROP TABLE users; |
Data loss |
TRUNCATE |
TRUNCATE orders; |
Data loss |
git push --force / -f |
git push -f origin main |
History rewrite |
git reset --hard |
git reset --hard HEAD~3 |
Uncommitted work loss |
git checkout . / git restore . |
git checkout . |
Uncommitted work loss |
kubectl delete |
kubectl delete pod |
Production impact |
docker rm -f / docker system prune |
docker system prune -a |
Container/image loss |
PowerShell and cmd (Windows)
The hook also checks the PowerShell tool (Claude Code's main Windows shell)
and any pwsh/powershell/cmd launched from Bash. Matching ignores case,
covers aliases in command position, accepts parameter prefixes (-r, -fo)
and strips cmd ^ escapes. All rows above apply there too.
| Pattern | Example |
|---|---|
Remove-Item/rm/ri/del/erase/rd/rmdir + -Recurse or -Force |
gci | ri -r -fo |
cmd rd /s, rmdir /s, del /s, erase /s |
cmd /c rd /s /q C:\proj |
Format-Volume, Clear-Disk, Clear-Content, [IO.Directory]::Delete, [IO.File]::Delete |
Clear-Disk -Number 1 |
-EncodedCommand, iex, Start-Process of a shell, & $cmd (can't be inspected) |
irm $url | iex |
Best-effort on PowerShell. String matching can't see a command built at
runtime. For a hard stop, add Claude Code permission deny rules, which parse
PowerShell and its aliases: "deny": ["PowerShell(Remove-Item *)"] in
.claude/settings.json. The hook runs through bash, so Windows needs Git Bash.
Safe exceptions
These patterns are allowed without warning:
rm -rf node_modules/.next/dist/__pycache__/.cache/build/.turbo/coverage
How it works
The hook reads tool_name and the command from the tool input JSON, checks it against the
patterns above, and returns a hookSpecificOutput payload with
permissionDecision: "ask" and a warning reason if a match is found (the
decision must be nested under hookSpecificOutput — Claude Code ignores a
top-level permissionDecision). You can always override a MEDIUM warning and
proceed.
HIGH tier (hard deny)
Two catastrophic shapes are denied, not asked: rm -r/-R of exactly
/, ~, or $HOME, and force-push to the repo's default branch. SIMPLE
commands only (no ;, &&, ||, |, newline) — compound shapes fall
through to the MEDIUM ask; --force-with-lease is never HIGH. A best-effort
advisory hard-stop, not a policy boundary: the escape hatch is ending the
opt-in, session-scoped /careful session.
Project patterns (additive only)
Add warn rules — one POSIX ERE per line, # comments OK — in
~/.gstack/careful-patterns.txt (global) or
~/.gstack/projects/<slug>/careful-patterns.txt (per-project). Consulted
after the built-in families, so config can only ADD rules, never suppress a
baseline warning. Invalid regex lines are skipped.
To deactivate, end the conversation or start a new one. Hooks are session-scoped.
04 同仓库更多 Skills
write-skill
Write a new agent skill or improve one without bloat: the edit ladder, levels, drift and size checks, full diets. (gstack)
verify
Use when coding: run the checks and tests /ship picks until green. (gstack)
unfreeze
Clear the freeze boundary set by /freeze, allowing edits to all directories again. (gstack)
ubicloud
Run a heavy suite, build or eval on an ephemeral 16-vCPU Ubicloud VM: TTL-named VMs, a reaper, quota preflight and a hang watchdog. (gstack)
beta
Clean fixture tool skill with no forced reads and no mode table.
alpha
Fixture dispatcher with a mode table and forced-read references.