Inbox Integrations

Zellij's Inbox shows which panes need you, which are working, and which have finished or failed. This page covers what Zellij picks up with no setup, which programs report their status to it, and how to connect the ones that don't.

Last checked: 9 November 2026. Programs are adding support quickly, so newer versions than those listed may already work.

What works with no setup

Zellij watches every pane for these signals:

SignalWhat the Inbox shows
OSC 7501 program statusExactly what the program reports: idle, working, done, needs you (approval, a question, or a login) or failed, plus its message and progress
Terminal bellNeeds you
Desktop notifications (OSC 9, OSC 777, kitty's OSC 99)Needs you, with the notification text
Shell prompt markers (OSC 133, or VS Code's OSC 633)A command finished or failed, using its exit code
A command pane exitingFailed on a non-zero exit code or a signal; otherwise done, if it ran for at least done_threshold_secs or the pane is watched
A command running longer than done_threshold_secsWorking, then done when it finishes
Busy output going quietQuiet; in a watched pane, needs you
Output arriving while you look elsewhereNew output

Full-screen programs such as vim, less and htop, and commands you are typing into, are not reported as working or done.

Coding agents

Agents that report their status (OSC 7501)

These agents tell Zellij directly whether they are working, waiting for you or finished. Nothing needs to be turned on.

AgentFirst versionWorks inside ZellijHow to turn it off
Claude Code2.1.295YesCLAUDE_CODE_DISABLE_TERMINAL_TITLE=1
Codex CLI0.163.0Yes. 0.164.0 adds done, failed, and what it is waiting forNone
Pi1.1.0YesPI_PROGRAM_STATUS=0
Crush0.98.0YesNone
OpenCode2.1.0Yes. Reports working, waiting and idle, but not done or failed. The 1.x releases do not reportNone
GitHub Copilot CLI1.0.106YesNone
Qwen Code0.26.9YesNone
goose1.56.0Yes, in its text interfaceGOOSE_CLI_PROGRAM_STATUS=false
Factory DroidCLI 0.236.0YesNone
Atomic0.9.28YesPI_PROGRAM_STATUS=0
Kimi Code2.4.0Only with PI_PROGRAM_STATUS=1. By default it turns reporting off inside Zellij, tmux and screenPI_PROGRAM_STATUS=0
Antigravity CLI1.4.0Reported, not yet confirmedAGY_CLI_OSC7501=off
AmpBuild of 7 October 2026Reported, not yet confirmedNone
Kiro CLI2.32.0Reported, not yet confirmedKIRO_NO_PROGRAM_STATUS=1

To make Kimi Code report inside Zellij, add this to your shell's startup file:

export PI_PROGRAM_STATUS=1

Agents that don't report their status yet

These agents can still reach the Inbox through desktop notifications or the terminal bell. Zellij shows them as needing you, but cannot tell when they are working or done.

AgentWhat to turn on
Gemini CLISet general.enableNotifications to true in its settings. Support for OSC 7501 is requested in gemini-cli#29710
Cursor CLITurn on notifications in its settings
AiderRun with --notifications
OpenCode 1.xUpgrade to 2.1.0 or later

Codex, Crush and Qwen Code also send notifications or a bell alongside their status. Zellij uses both.

Other programs that report their status

ProgramFirst version
Hugo0.168.0
tuist4.213.0
Buildkite CLI3.64.0
Buildkite Agent4.8.0, behind an experiment flag
git-stack0.2.0
Composer2.11.0-RC1 (pre-release)

Support has been requested for cargo, Gradle, MSBuild, Nix, docker compose and Neovim.

Libraries for adding it to your own programs exist for Rust, Go (including Bubble Tea 2.1.0 and charmbracelet/x/ansi), Python (osc7501 on PyPI), Node (OpenTUI 0.6.3) and Swift.

Your own scripts

Any script can report its status with one printf. Text in msg must be base64-encoded:

status() {
  printf '\e]7501;state=%s:msg=%s\e\\' "$1" "$(printf '%s' "$2" | base64 | tr -d '\n')"
}

status working "Syncing photos"
rsync -a ~/Photos backup:/photos && status done "Photos synced" || status error "rsync failed"

The states are idle, working, done, blocked and error. state=clear removes the status. Other optional keys:

KeyMeaning
kindWhat a blocked program needs: permission, question or auth
progressA percentage from 0 to 100, for working and blocked
appA short program name, such as rsync
idReports several tasks at once, for example id=deploy/eu-west
titleA short base64-encoded label

Terminals that do not understand the sequence ignore it, so the function is safe to keep in scripts that run elsewhere.

If a script is run in a command pane, Zellij already reports it as failed when it exits with an error, and as done when it ran for at least done_threshold_secs (or the pane is watched), without any changes.

Shell commands

For Zellij to see when each command at your prompt finishes and whether it failed, your shell has to send prompt markers (OSC 133 or OSC 633). Zellij does not install these for you. Many prompts and shell integration scripts already send them; check your shell's or prompt's documentation, and see Shell Integration.

Without prompt markers, Zellij falls back to watching which program is running in the pane. It can still tell a long command is working and when it ends, but not whether it succeeded.

Passing status to your terminal

When Zellij runs inside a terminal that understands OSC 7501, it passes on the status of the pane that most needs you, so the terminal can show it in its own tab or notifications.

Turn this off with host_status false in the attention block.

Settings

All of this is configured in the attention block of your config file. The commented defaults are in the default config. The settings most relevant here:

attention {
    enabled true
    host_status true
    done_threshold_secs 10
    track_commands true
    idle_rule "all"
}
  • enabled: turn the whole system off with false.
  • host_status: pass status to the outer terminal.
  • done_threshold_secs: how long a command must run before it counts as working and is reported when done.
  • track_commands: list long-running commands as working.
  • idle_rule: notice output going quiet in "all" panes, or only "watched" ones.

Individual panes can also be watched (report everything) from the right-click menu or pane mode, and panes, tabs and sessions can be muted (report nothing) from pane, tab and session mode (panes and tabs also from the right-click menu). See Watching, ignoring and muting.