| name | tmux |
| description | Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output. |
| metadata | {"openclaw":{"emoji":"๐งต","os":["darwin","linux"],"requires":{"bins":["tmux"]}}} |
| category | system |
| maturity | stable |
| tags | ["tmux","session-control","keystrokes","pane-capture","automation"] |
tmux Session Control
Control tmux sessions by sending keystrokes and reading output. Essential for managing Claude Code sessions.
When to Use
โ
USE this skill when:
- Monitoring Claude/Codex sessions in tmux
- Sending input to interactive terminal applications
- Scraping output from long-running processes in tmux
- Navigating tmux panes/windows programmatically
- Checking on background work in existing sessions
When NOT to Use
โ DON'T use this skill when:
- Running one-off shell commands โ use
exec tool directly
- Starting new background processes โ use
exec with background:true
- Non-interactive scripts โ use
exec tool
- The process isn't in tmux
- You need to create a new tmux session โ use
exec with tmux new-session
Example Sessions
| Session | Purpose |
|---|
shared | Primary interactive session |
worker-2 - worker-8 | Parallel worker sessions |
Common Commands
List Sessions
tmux list-sessions
tmux ls
Capture Output
tmux capture-pane -t shared -p | tail -20
tmux capture-pane -t shared -p -S -
tmux capture-pane -t shared:0.0 -p
Send Keys
tmux send-keys -t shared "hello"
tmux send-keys -t shared "y" Enter
tmux send-keys -t shared Enter
tmux send-keys -t shared Escape
tmux send-keys -t shared C-c
tmux send-keys -t shared C-d
tmux send-keys -t shared C-z
Window/Pane Navigation
tmux select-window -t shared:0
tmux select-pane -t shared:0.1
tmux list-windows -t shared
Session Management
tmux new-session -d -s newsession
tmux kill-session -t sessionname
tmux rename-session -t old new
Sending Input Safely
For interactive TUIs (Claude Code, Codex, etc.), split text and Enter into separate sends to avoid paste/multiline edge cases:
tmux send-keys -t shared -l -- "Please apply the patch in src/foo.ts"
sleep 0.1
tmux send-keys -t shared Enter
Claude Code Session Patterns
Check if Session Needs Input
tmux capture-pane -t worker-3 -p | tail -10 | grep -E "โฏ|Yes.*No|proceed|permission"
Approve Claude Code Prompt
tmux send-keys -t worker-3 'y' Enter
tmux send-keys -t worker-3 '2' Enter
Check All Sessions Status
for s in shared worker-2 worker-3 worker-4 worker-5 worker-6 worker-7 worker-8; do
echo "=== $s ==="
tmux capture-pane -t $s -p 2>/dev/null | tail -5
done
Send Task to Session
tmux send-keys -t worker-4 "Fix the bug in auth.js" Enter
Notes
- Use
capture-pane -p to print to stdout (essential for scripting)
-S - captures entire scrollback history
- Target format:
session:window.pane (e.g., shared:0.0)
- Sessions persist across SSH disconnects