Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

careful — Claude Code skill: what it does, how to install

Intercepts Bash and PowerShell commands before execution to catch destructive actions like forced git pushes or database drops. Useful when giving agents terminal access.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add garrytan/gstack --skill careful -a claude-code
Open on GitHub

What careful does

The skill attaches a PreToolUse hook to Bash and PowerShell calls, executing check-careful.sh before any command runs. It scans commands against dangerous patterns such as DROP TABLE, TRUNCATE, git reset --hard, kubectl delete, and rm -rf. When a match appears, Claude Code prompts you to confirm or cancel. Safe build artifacts like node_modules, .next, dist, and build pass through without warnings.

Two catastrophic actions face a hard block instead of a confirmation prompt: deleting /, ~, or $HOME, and force-pushing to the default repository branch. You can also add project-specific regex rules to ~/.gstack/careful-patterns.txt.

Do not treat this hook as an unbreakable boundary on PowerShell because static string matching misses commands built dynamically at runtime. On Windows, running the hook requires Git Bash.

What it helps with

  • Stop accidental file deletion through rm -rf in the terminal
  • Block destructive database queries like DROP TABLE and TRUNCATE
  • Prevent loss of uncommitted work from git reset --hard and forced pushes
  • Halt risky container cleanup via docker system prune or kubectl delete

Example prompts for the agent

  • Turn on safety mode before running shell commands
  • Run `/careful` to guard against destructive actions
  • Warn me before running any destructive commands in the terminal

How to install careful

1Skills CLI (Vercel)

npx skills add garrytan/gstack --skill careful -a claude-code

2Manually: put the files in place

~/.claude/skills/careful/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/careful/

From the same set12

The whole set →
gstack garrytan A router skill for the gstack suite. It picks the right gstack skill for your request and hands off to it. Claude Code CX Codex Cursor +1 24,100installs plan-design-review garrytan Senior product designer review for plans before implementation begins. It spots missing UX decisions and updates the plan document directly. Claude Code CX Codex Cursor +1 474installs qa garrytan Automate bug hunting in browser, API, CLI, jobs, workers, and webhooks. Searches code, runs commands, checks logs, and asks clarifying questions. Claude Code CX Codex Cursor +1 457installs cso garrytan Audits code and infrastructure for security findings, with reproduction and repair candidates in comprehensive mode. Use it when reviewing a project. Claude Code CX Codex Cursor +1 405installs qa-only garrytan Reports bugs across browser apps, APIs, CLI tools, and background workers without touching your codebase. Useful for verification runs before a release. Claude Code CX Codex Cursor +1 395installs freeze garrytan The skill blocks Edit, Write and NotebookEdit outside one directory. The hook returns a deny, not a warning. Claude Code CX Codex Cursor +1 352installs plan-devex-review garrytan An interactive read of a plan from the developer's side: it flags where someone opening the project for the first time will stumble, and asks before editing. Claude Code CX Codex Cursor +1 347installs setup-browser-cookies garrytan This skill transfers cookies from your local Chromium browser into a headless browsing session. Use it to test authenticated sites without re-entering credentials each run. Claude Code CX Codex Cursor +1 342installs

Similar

differential-review trailofbits Reviews code changes for security issues using Git history and test coverage. Use it for commits, diffs, and pull requests that need a written review report. Claude Code CX Codex Cursor +1 8,800installs kr-whois-lookup NomaDamas Queries public registration data for .kr domains, IP addresses, and AS numbers via k-skill-proxy. Read-only tool for coding agents. Claude Code CX Codex Cursor +1 4,200installs fullstack-guardian https://github.com/Jeffallan Builds security-focused full-stack web features across frontend and backend layers. Useful for shipping authenticated APIs, CRUD forms, and database flows. Claude Code CX Codex Cursor +1 5,600installs cc-skill-security-review sickn33 Reviews code for SQL injection, XSS, leaked secrets, and authorization flaws. Use it when building APIs, file uploads, or authentication. Claude Code CX Codex Cursor +1 2,100installs omni-github-skills cheaper-inference Searches GitHub for agent skill files like SKILL.md or CLAUDE.md, scans them for malware and hardcoded secrets, and installs them into your agent setup. Claude Code CX Codex Cursor +1 955installs sandbox-npm-install official github This skill installs npm dependencies on Docker's local ext4 filesystem and symlinks node_modules back into the workspace. Use it with virtiofs mounts. GitHub Copilot 1,700installs git-guardrails-claude-code Matt Pocock This skill adds a Claude Code hook that stops risky Git commands before they run. Use it when an agent must not push or discard working-tree changes. Claude Code 499,069installs ponytail-review DietrichGebert ponytail-review reviews a change beyond the diff, checking connected code, bugs, risks, load, tests, speed, and unnecessary code. Use it for PRs and commits. Claude Code CX Codex Cursor +1 56,300installs

Questions about careful

How do I install careful in Claude Code?

Run npx skills add garrytan/gstack --skill careful -a claude-code in your terminal.

What does the careful skill do?

It inspects Bash and PowerShell commands before execution and prompts for approval whenever a command risks data loss, file deletion, or Git history overwrites.

Does careful work on Windows?

Yes, but it requires Git Bash to run the hook script. For reliable enforcement against PowerShell commands, configure explicit deny rules in .claude/settings.json.

Source text

SKILL.md · MIT
---
name: careful
version: 0.1.0
description: Safety guardrails for destructive commands. (gstack)
triggers:
  - be careful
  - warn before destructive
  - safety mode
allowed-tools:
  - Bash
  - Read
hooks:
  PreToolUse:
    - 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"
      hooks:
        - type: command
          command: 'bash -c "exec bash \"$HOME/.claude/skills/gstack/careful/bin/check-careful.sh\""'
          statusMessage: "Checking for destructive commands..."
---
<!-- 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.

```bash
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.

© garrytan · MIT · garrytan/gstack

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor