tmux
/SKILLUse for existing interactive tmux sessions. For one-shot commands, use normal shell. For new non-interactive background jobs, use background execution.
--- name: tmux description: "Control tmux sessions/panes for interactive CLIs: list, capture output, send keys, paste text, monitor prompts." metadata: { "openclaw": { "emoji": "🧵", "os": ["darwin", "linux"], "requires": { "bins": ["tmux"] }, "install": [ { "id": "brew", "kind": "brew", "formula": "tmux", "bins": ["tmux"], "label": "Install tmux (brew)", }, ], }, } --- # tmux Use for existing interactive tmux sessions. For one-shot commands, use normal shell. For new non-interactive background jobs, use background execution. ## Basics ``bash tmux ls tmux list-windows -t shared tmux list-panes -t shared:0 tmux capture-pane -t shared:0.0 -p tmux capture-pane -t shared:0.0 -p -S - ` Target format: session:window.pane, e.g. shared:0.0. ## Send input Literal text, then Enter: `bash tmux send-keys -t shared:0.0 -l -- "Please continue" tmux send-keys -t shared:0.0 Enter ` Special keys: `bash tmux send-keys -t shared:0.0 C-c tmux send-keys -t shared:0.0 C-d tmux send-keys -t shared:0.0 Escape ` Use -l -- for arbitrary text. Split text and Enter to avoid paste/newline surprises. ## Sessions `bash tmux new-session -d -s worker tmux rename-session -t old new tmux kill-session -t worker ` ## Prompt checks `bash tmux capture-pane -t worker-3 -p | tail -20 tmux capture-pane -t worker-3 -p | rg "proceed|permission|Yes|No|❯" ` Approve/select only when the prompt is understood: `bash tmux send-keys -t worker-3 -l -- "y" tmux send-keys -t worker-3 Enter ` ## Helpers - scripts/find-sessions.sh: discover sessions. - scripts/wait-for-text.sh: wait until pane output contains text. ## Notes - capture-pane -p prints to stdout for scripts. - -S -` captures full scrollback. - tmux sessions persist across SSH disconnects.