Help us improve
Share bugs, ideas, or general feedback.
From session-tools
Detect stuck states in a Claude Code tmux session and resolve them
npx claudepluginhub shsym/claude-session-tools --plugin session-toolsHow this skill is triggered — by the user, by Claude, or both
Slash command
/session-tools:skills/unstick-sessionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Detect what's blocking a session and suggest or apply a resolution.
Detects whether AO worker tmux sessions are actively thinking, executing commands, idle, or queued. Avoids false idle reports by inspecting 20+ lines for Unicode activity indicators and tool-use patterns.
Debug interactive CLIs, REPLs, TUIs, watchers, and long-running terminal processes using tmux to preserve live state, send controlled input, and capture evidence. Use when commands hang, wait for input, or behave differently in a real terminal.
Runs interactive CLI tools (vim, git rebase -i, REPLs) via tmux detached sessions with send-keys and capture-pane for programmatic control when standard bash piping fails.
Share bugs, ideas, or general feedback.
Detect what's blocking a session and suggest or apply a resolution.
$ARGUMENTS format: <session-name> [auto]
Parse arguments:
auto flagCapture session output:
"$PLUGIN_DIR/bin/capture-session" "<session_name>" 40
Analyze the output and determine:
✢, ⏺, Thinking…)Stuck types:
| Type | Signs | Fix |
|---|---|---|
yes_no | (y/n), [Y/n], Continue? | Send y or n |
multi_choice | ❯ 1., numbered options | Send number |
text_input | Enter:, Type:, waiting for input | Send text or Escape |
permission | Bash command, Allow, permission dialog | Send y or n |
interactive_editor | : alone (vim), (END), --More-- | :q! or q |
hanging_command | No output, no prompt | Ctrl-C |
worker_idle | ❯ prompt, no task | Needs new task |
Report findings:
## Session: <name>
**Status:** <working/stuck>
**Stuck Type:** <type or N/A>
**Details:** <what you see>
**Suggested Fix:** <what to do>
If auto mode and stuck:
Execute the fix using tmux send-keys:
# For yes_no:
tmux send-keys -t "<session>" "y" && tmux send-keys -t "<session>" Enter
# For multi_choice:
tmux send-keys -t "<session>" "1" && tmux send-keys -t "<session>" Enter
# For text_input (cancel):
tmux send-keys -t "<session>" Escape
# For permission:
tmux send-keys -t "<session>" "y" && tmux send-keys -t "<session>" Enter
# For interactive_editor (vim):
tmux send-keys -t "<session>" Escape && tmux send-keys -l -t "<session>" ":q!" && tmux send-keys -t "<session>" Enter
# For interactive_editor (pager):
tmux send-keys -t "<session>" "q"
# For hanging_command:
tmux send-keys -t "<session>" C-c
Then re-capture and verify the fix worked.
/session-tools:unstick-session ai-worker-001
## Session: ai-worker-001
**Status:** stuck
**Stuck Type:** permission
**Details:** Waiting for approval: "Bash command: npm install"
**Suggested Fix:** Send 'y' Enter to approve, or 'n' Enter to deny