Troubleshooting
User-facing symptom → cause → fix, for the questions that keep coming back. One section per symptom; keep entries short and command-exact.
Copy from the embedded terminal doesn't reach my clipboard (especially over SSH)
How copy works. kobe's embedded terminal is a full-mouse TUI: it enables
the terminal's mouse reporting (clicks focus panes, tabs are clickable, the
wheel routes to the app). Mouse reporting hands drag-selection to kobe, so
your terminal emulator's native selection no longer participates. Every
mouse-enabled TUI (tmux, vim with mouse=a) makes the same trade. kobe
implements its own grid selection instead: drag to select (pane-aware, works
inside splits), release to copy. Delivery is dual-channel:
- a pipe into the platform clipboard command on the machine kobe runs on
(
pbcopy/wl-copy/xclip/xsel), and - an OSC52 escape sequence written to the tty.
The SSH case. When you SSH into the machine running kobe, channel 1 lands on the remote machine's clipboard, not yours. The only channel that can reach the clipboard of the machine you are physically at is OSC52: it travels back through the SSH tty and is executed by your local terminal emulator.
kobe (remote) ──OSC52──▶ ssh tty ──▶ your terminal app ──▶ your clipboardSo if copy "works locally but not over SSH", the break is almost always at the receiving terminal app (the one drawing pixels in front of you):
| Terminal (the one you're physically using) | OSC52 clipboard write |
|---|---|
| iTerm2 | Off by default: Settings → General → Selection → check "Applications in terminal may access clipboard" |
| Ghostty | Allowed (clipboard-write = allow is the default) |
| kitty / WezTerm | Allowed or ask, configurable |
| Terminal.app (macOS) | Unsupported: no fix; use another terminal or the escape hatch below |
tmux in the path? If kobe itself runs inside a remote tmux session, tmux swallows OSC52 unless told to forward it:
set -g set-clipboard onEscape hatch that always works: hold Option (macOS) / Shift (most Linux terminals) while dragging. That bypasses mouse reporting entirely and uses your terminal's native local selection + copy, which always lands on your local clipboard, at the cost of selecting across the whole kobe window (no pane awareness), exactly like tmux.
Remote workflows: the kobe web dashboard sidesteps all of this. The browser owns the clipboard.
Mouse wheel in the embedded terminal
The wheel follows real terminal-emulator semantics, in order:
- the embedded app enabled mouse tracking (claude's transcript,
vim,less --mouse) → the wheel is forwarded; the app scrolls itself; - fullscreen app without mouse tracking → 3 arrow keys per tick;
- plain shell → kobe's local scrollback (same channel as
ctrl+pgup/ctrl+pgdn; scroll to the bottom to resume following).
If scrolling "does nothing" inside an app, that app received the events and
chose not to scroll. Check its own mouse setting (e.g. :set mouse=a).
Memory stays high after upgrading from a pre-0.8 build
kobe 0.8 replaced the old tmux runtime with the PureTUI + Hosted PTY backend,
but upgrading the package does not stop sessions that a pre-0.8 build already
left running. Those old tmux -L kobe sessions keep their bun / engine
process groups resident, so memory can look unchanged after the upgrade.
kobe doctor now reports them:
legacy tmux: ⚠ tmux 3.5a — 2 pre-v0.8 session(s) on `kobe`
20 process(es) across 8 pane(s), 1008.5 MB RSS total
→ run `kobe reset` to stop this retired runtime safelyFix: kobe reset. It stops the daemon and Hosted PTY host, then SIGTERMs
each legacy pane process group before killing the retired tmux server (a bare
tmux kill-server would leak engines that ignore SIGHUP). Worktrees and the
task index are untouched; add --hard only if you also want to wipe task/UI
state.