Troubleshooting
Symptoms, likely causes and fixes: shortcuts that do nothing, an old-looking bar, missing logos, wrong notifications, early finishes and focus jumps.
Start with the health check. It lists what is off and how to fix it, and it covers most of the cases below.
kittymux doctorA shortcut does nothing
Cause. The chord never reached kitty, or another binding replaced it.
- The window manager took it. Hyprland handles a global chord before kitty.
kittymux doctorlists chords Hyprland binds that kittymux also uses. Check one yourself withhyprctl binds -j. - Another binding replaced it. kitty uses the last definition of a chord, and kittymux's keys load after yours. Run
kittymux keysto list every chord both define. See Your own shortcuts. - It is not bound. Press
ctrl+alt+/and search for it. If it is missing, runkittymux upgrade. - tmux has focus. Only the keys tmux really binds pass through to it; everything else stays kitty's.
Fix. Rebind the chord in the template, or put your own map below the kittymux include lines. See Resolve a clash.
kittymux is not found
Cause. ~/.local/bin is not on your PATH.
Fix. Add export PATH="$HOME/.local/bin:$PATH" to your shell profile and open a new shell. Until then, run ~/kittymux/bin/kittymux. The installer prints this when it is needed.
The bar looks old after an upgrade
Cause. kitty caches tab_bar.py for the life of a running instance.
Fix. Run git pull && kittymux upgrade. It refreshes the links and reloads every running kitty twice. A new kitty window picks up the new bar at once. If doctor says a kitty was updated while it was running, save with ctrl+alt+shift+s, quit that kitty and start it again.
Logos are missing or show as boxes
Cause. The bundled icon font loads only when kitty starts. A glyph added to the font reaches a running kitty only after a restart.
Fix. Restart kitty once after the first install, and after an upgrade that adds a logo. Until then kittymux leaves the logo out instead of drawing a box. Your sessions come back through ctrl+alt+shift+s.
Notifications are doubled or missing
Doubled. You removed the filter_notification line in kittymux.conf, or a program titles its own notification with an agent's name. Put the line back to have kittymux own agent notifications.
Missing. Check these in order:
kittymux notify statussays whether notifications are off, or muted and for how long.kittymux snoozemay be active for that window. Run it inside the window with--clear.- You were looking at the agent, so nothing fires. Focusing an agent clears its cues.
- The run was shorter than 15 seconds, or kittymux did not know how long it ran. Finished notifications need 15 seconds of known work.
- You hit the rate limit: one per window every 10 seconds and five in total.
- Your notification daemon is not running or has no icon support.
kittymux explain shows, for every notification, whether it was sent or why it was held back.
An agent shows as finished too early
Cause. Without hooks, a quiet screen is the only evidence, so a pause between tool calls can look like the end.
Fix. Run kittymux hooks --install. With the Stop hook, only the agent's own word ends a turn. kittymux doctor says when a hook event is missing. Then run kittymux explain to see which evidence ended the turn. See When is something "done"?.
My own scripts cannot find kitty after I moved the socket
Cause. Scripts written for listen_on unix:/tmp/mykitty look for /tmp/mykitty-<pid> and nowhere else. When the socket moves to ${XDG_RUNTIME_DIR}, they find no kitty. Their keys then seem to do nothing, with no error to read, because a key-bound background script has nowhere to print one.
What kittymux does. It keeps a link at /tmp/mykitty-<pid> that points to the real socket, so those scripts keep working. The link grants nothing: the socket sits in your private directory, and only you can open it. kittymux never replaces anything that is already at that path, and it removes the links of kitties that have exited. kittymux doctor says how many of your scripts depend on it.
Fix if it is missing. kittymux features on socketlink, then reload kitty (kittymux upgrade). For one kitty, right now: ln -s "$XDG_RUNTIME_DIR/mykitty-<pid>" /tmp/mykitty-<pid>.
A bell moves my focus
Cause. A bell in an unfocused window makes kitty request attention, and some compositors answer by focusing that window and switching workspace. Hyprland does this when misc:focus_on_activate is on.
Fix. kittymux reads that option and turns the bell request off, so this should not happen. kittymux doctor reports it. On sway, KDE or GNOME, which kittymux does not inspect, set window_alert_on_bell no in your kitty.conf. To keep attention requests on anyway, touch ~/.local/state/kittymux/attention-on. See A notification never takes your focus.
The pointer is a hand over the bar edge
Cause. This is how kitty works, not a fault. It affects tabs with a single pane.
- Over the tab bar kitty always shows a hand, and ignores shape requests there.
- kitty hit-tests split borders, which is what produces the resize arrow, only in a tab with two or more panes. In a single-pane tab nothing under the pointer is a border.
What you get. In a tab with split panes, the pointer over the bar's divider is the native resize arrow, the same one you see over a divider between two panes. In a single-pane tab, the bar's last two columns are the grab zone and the pointer stays a hand. Dragging still resizes the bar.
What to do.
- Use the docked panel (
ctrl+alt+shift+b). It is its own window and shows the resize cursor on its edge in every tab. - Resize from the keyboard with
ctrl+alt+shift+[andctrl+alt+shift+], or collapse to the rail with the«button. - If the arrow in a split tab looks wrong, such as the wrong shape, offset or missing, the picture comes from your cursor theme. Check that the theme has
sb_h_double_arrowand the aliasesew-resizeandcol-resize.
kittymux cannot change this from Python. The roadmap explains what would fix it in kitty: The resize arrow on the bar edge of a single-pane tab.
Join does not place panes as expected
- The target is not in the splits layout. Placement that keeps the old shape needs kitty's
splitslayout. Intall,grid,stackor another layout, kitty places the panes itself. See Limits. - The list says there is no other tab. Join lists every tab but the one being moved. Open another tab first.
- A tab you expected is missing. Tabs in other OS windows are listed with other window. Clear the filter if you typed one.
- The command says to run it from a pane.
kittymux joinacts on the kitty and pane it is started from. Run it inside a kitty withallow_remote_control socket-onlyand alisten_onsocket. - The panes arrived narrow. Every pane has to fit in the target tab, so joining several panes into a small or already split tab leaves each little room. Press
alt+shift+=to equalize the panes, or join into a wider tab.
Doctor warns about the remote control socket
Cause. The recommended settings are allow_remote_control socket-only and listen_on unix:${XDG_RUNTIME_DIR}/mykitty. doctor warns when you use allow_remote_control yes or a socket in /tmp.
Why it matters. With yes, a program in a terminal can control kitty with an escape sequence, such as an agent's tool output or a file you cat. A socket in the world-writable /tmp can be created ahead of you by another local user. kittymux only talks to sockets you own.
Fix. Use the recommended lines. See Install and update.
A restored agent asks before it resumes
Cause. This is on purpose. A restored agent window never silently re-enters a conversation.
What to press. ⏎ resumes, n starts a new conversation, s opens a shell and a resumes this and every other waiting prompt for two minutes. To skip the question, set KITTYMUX_RESUME=auto. See The restore prompt.
Collect evidence
When something is still wrong, these show what kittymux sees:
kittymux version
kitty --version
kittymux doctor
kittymux explain --last 20For bar drag problems, start kitty with KITTYMUX_DEBUG=1. Errors go to ~/.local/state/kittymux/barsize-debug.log. Tab bar errors go to tab_bar-error.log in the same directory.
Report a problem
Open an issue on GitHub with the output above, your window manager and what you expected. Report a vulnerability privately instead. See Privacy and security.
Customization
Choose which pieces of kittymux you use, set colours, layout and behaviour with switches and environment variables, and add your own agents.
Privacy and security
What kittymux reads, what it stores and where, what never leaves your machine, the trust boundaries it defends and how to report a vulnerability privately.