Help us improve
Share bugs, ideas, or general feedback.
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.
npx claudepluginhub nsheaps/ai-mktpl --plugin self-terminateHow 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.
Manages 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.
Share bugs, ideas, or general feedback.
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: