From self-terminate
Gracefully terminate the Claude Code session by sending SIGINT to the Claude process. Works for local CLI sessions and Claude Code Web (remote sessions). Use when you make a change that requires a restart, or when the user requests termination.
How this skill is triggered — by the user, by Claude, or both
Slash command
/self-terminate:self-terminateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill enables Claude to gracefully terminate its own session by sending a SIGINT signal to its process.
This skill enables Claude to gracefully terminate its own session by sending a SIGINT signal to its process.
This plugin includes a PreToolUse hook that automatically validates git state before termination:
✅ Automatically checks:
❌ Blocks termination if:
The hook provides clear error messages explaining what needs to be resolved before termination can proceed.
Claude runs as a process that spawns shell subprocesses for Bash commands. The parent PID ($PPID) of any spawned shell is the Claude process itself.
Sending SIGINT (signal 2) to the Claude process triggers a graceful shutdown, similar to pressing Ctrl+C.
The easiest way is to execute the provided script:
/path/to/plugins/self-terminate/bin/self-terminate.sh
Or if the plugin is installed:
~/.claude/plugins/self-terminate/bin/self-terminate.sh
If the script is unavailable, Claude can terminate itself manually:
echo "Shell PID: $$"
echo "Claude PID (parent): $PPID"
ps -o pid,ppid,comm -p $$ -p $PPID
ps -o comm= -p $PPID
This should output claude or similar.
kill -INT $PPID
A typical Claude Code process tree looks like:
iTerm/Terminal
└── shell (user's interactive shell)
└── claude (PID: XXXXX) ← Target this
└── /bin/zsh (spawned for Bash commands)
└── (your command)
After termination:
claudeScript says parent is not Claude: You may be running in a nested shell or different environment. Check pstree -p $$ to see the full process tree.
Signal ignored: Some environments may mask signals. Try kill -TERM $PPID as an alternative.
In Claude Code Web environments, stop hooks may validate state before shutdown:
Example stop hook location: ~/.claude/stop-hook-git-check.sh
| Environment Variable | Purpose |
|---|---|
CLAUDE_CODE_REMOTE | Set to "true" in Claude Code Web |
CLAUDE_PROJECT_DIR | Repository root (available in hooks) |
CLAUDE_CODE_SESSION_ID | Current session UUID |
For Claude Code Web sessions, you can also terminate by:
npx claudepluginhub nsheaps/ai-mktpl --plugin self-terminateManages Claude Code sessions using /rename, /resume, and CLI commands for naming, checkpointing, and resuming workflows in debugging, feature development, PR reviews, and investigations.
Spawns a new Claude Code session in a separate terminal for parallel tasks, optionally sharing context like git branch, task summary, and key files. Use to multitask without losing current progress.
Auto-stashes uncommitted work in ~/dev/* repos on every Claude Code session end, preventing data loss from branch switches during long sessions.