Safety check before executing destructive or irreversible commands. Catches dangerous shell commands, risky git operations, secret exposure, and high-blast-radius actions before they run. Activates automatically when Claude is about to execute shell commands that match known risk patterns. Trigger phrases: "check before running", "is this command safe", "safety check", "pre-execution review".
Install to Claude Code
npx -y skills add aibot88/sec_skill_store --skill pre-exec-check --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Pre Exec Check?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-pre-exec-check)More formats (shields.io, HTML) on the badges page.
---
name: pre-exec-check
description: >-
Safety check before executing destructive or irreversible commands. Catches
dangerous shell commands, risky git operations, secret exposure, and
high-blast-radius actions before they run. Activates automatically when Claude
is about to execute shell commands that match known risk patterns.
Trigger phrases: "check before running", "is this command safe",
"safety check", "pre-execution review".
user-invocable: false
---
# Pre-Execution Safety Check
Before executing any shell command, evaluate it against the risk categories below.
This check runs silently — only surface it to the user when a risk is detected.
## Risk Categories
### CRITICAL — Block and warn. Never proceed without explicit user confirmation.
**Destructive file operations:**
- `rm -rf` on any path outside a known temp/build directory
- `rm -rf /`, `rm -rf ~`, `rm -rf .` (catastrophic)
- Recursive delete on paths containing `..`
- `> filename` (truncating files) on non-build artifacts
**Irreversible git operations:**
- `git push --force` or `git push -f` to `main`, `master`, or `production`
- `git reset --hard` when there are uncommitted changes
- `git clean -fd` or `git clean -fdx` (deletes untracked files)
- `git branch -D` on branches with unmerged commits
- `git rebase` on already-pushed commits
**Database destruction:**
- `DROP TABLE`, `DROP DATABASE`, `TRUNCATE TABLE` without a WHERE or in production
- `DELETE FROM` without a WHERE clause
- Migration rollbacks in production
**Process/system operations:**
- `kill -9` on PIDs that aren't child processes of the current session
- `pkill` or `killall` on broad patterns
- `chmod -R 777` or `chmod -R 000`
- `chown -R` on system directories
- Writing to `/etc/`, `/usr/`, or other system paths
**Secret exposure:**
- `echo $API_KEY`, `cat .env`, `printenv` piped to files or network
- Any command that would print secrets to stdout in a logged session
- `curl` or `wget` with credentials in the URL
### HIGH — Warn user, explain the risk, suggest safer alternative.
**Risky git operations:**
- `git push --force` to any branch (suggest `--force-with-lease`)
- `git reset --hard` (suggest `git stash` first)
- `git checkout -- .` or `git restore .` (discards all changes)
- Amending commits that have been pushed
**Package management:**
- `npm publish` (publicly publishing a package)
- `pip install` from URL or `--extra-index-url` (supply chain risk)
- Removing lockfiles (`rm package-lock.json`, `rm poetry.lock`)
**Infrastructure:**
- `kubectl delete` on production namespaces
- `terraform destroy`
- `docker system prune -a` (removes all images)
**Network:**
- `curl -X POST` to external URLs with body containing local data
- `scp` or `rsync` to unfamiliar hosts
- `ssh` to production servers
### MEDIUM — Note the risk in passing. Proceed unless the context is unusual.
- Installing global packages (`npm install -g`, `pip install --user`)
- Running `sudo` commands
- Modifying dotfiles (`.bashrc`, `.zshrc`, `.gitconfig`)
- Creating world-readable files in shared directories
## Behavior
When a command matches a risk pattern:
1. **CRITICAL**: Stop. Tell the user: "This command [specific description] is destructive/irreversible. [Explain what could go wrong]. Do you want to proceed?"
2. **HIGH**: Warn: "Heads up — [command] carries risk because [reason]. Safer alternative: [suggestion]. Proceeding unless you object."
3. **MEDIUM**: Brief note only if the broader context makes it concerning.
When no risk is detected, proceed normally — do not mention this check.
## Anti-Patterns to Avoid
- Do NOT warn about every `rm` command. `rm file.txt` on a known temp file is fine.
- Do NOT block normal development workflows. `git push` to a feature branch is fine.
- Do NOT add friction to routine operations. The goal is catching genuine mistakes, not slowing down the user.
- Do NOT be paranoid about `curl` for fetching docs or APIs. Only flag when local data is being sent.
## Context Awareness
Use available context to reduce false positives:
- If in a git repo, check if the branch has been pushed before warning about force-push
- If a file was just created by the agent, deleting it is lower risk
- If running inside a Docker container or CI, destructive commands are lower risk
- `git status` output tells you if there are uncommitted changes worth protecting
Scanned 9/12/2026
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!