statusline

statusline is a command for Claude Code from HoussemDjeghri/bridger. It costs 11 tokens per session (794 once invoked), scanned B, original, MIT.

A command that adds an always-visible badge showing this session’s bridger peer name and whether it can receive messages. Bridger is the messaging link between coding-agent sessions.

In plain words
What is it for?
Use it when registering a session did not automatically connect the badge to the status line, or when there is no status line. The badge can show the peer name, a queued warning, or nothing if unregistered.
Why use it?
It makes the session’s registration and message-receiving state visible, including when messages are waiting but no watcher is listening.

Command for Claude Code

Written for Claude Code: ${CLAUDE_PLUGIN_ROOT} variable. Also seen: reads .claude/ paths; mentions Claude Code.

Runs only inside its plugin — its command needs a path that Claude Code sets for a plugin’s own hooks and for nothing else. Install the plugin, not this.

Part of the bridger plugin — 1 skill, 8 commands shipped together

Good fit Use it when registering a session did not automatically connect the badge to the status line, or when there is no status line. The badge can show the peer name, a queued warning, or nothing if unregistered.

Compare 6 commands from other repositories ↓
Install

Getting it into your agent

This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.

Claude Code
/plugin marketplace add HoussemDjeghri/bridger
Claude Code
/plugin install bridger

Made for: Claude Code.

Or install bridger, the plugin that ships this one along with the rest of its 1 skill, 8 commands.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for statusline

README.md
[![agentmods](https://agentmods.dev/badge/commands/houssemdjeghri/bridger/statusline.svg)](https://agentmods.dev/commands/houssemdjeghri/bridger/statusline)
Your own site
<a href="https://agentmods.dev/commands/houssemdjeghri/bridger/statusline"><img src="https://agentmods.dev/badge/commands/houssemdjeghri/bridger/statusline.svg" alt="Measured on agentmods" height="20"></a>
Per session 11 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 794 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00011 $0.00794
Opus 5 $0.00005 $0.00397
Sonnet 5 $0.00002 $0.00159
Haiku 4.5 $0.00001 $0.00079

Measured 8d ago against content hash d1635aae0919, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade B, and why

statusline scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Reads agent configuration directoriesmediumAgent snooping

.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.

After wiring, confirm `jq . ~/.claude/settings.json` still parses.
commands/statusline.md · 63 lines

What it actually says

Wire the bridger statusline badge — the name this session is registered as, plus whether it can actually hear:

  • [⇄ BRIDGER:<name>] — registered, watcher live.
  • [⇄ BRIDGER:<name> ⚠ queued] — registered and deaf: messages land on disk and nothing announces them. Arm wait --follow (re-run /bridger:register).
  • nothing at all — this session is not registered.

It is per SESSION, and it shows exactly what bridger whoami answers here: the peer this session registered whose directory is the cwd or contains it — the closest one, when several do. A bridger register <name> <dir> naming a directory that does neither — a scratch path, a sibling repo — registers that peer without touching the badge. The name on the badge is always one this session can actually receive on.

Usually nothing to do: when a drop-in dispatcher already runs the statusline, register wires the badge itself (it only adds a fragment, so the badge lights in the same session). This command is for the cases registration will not touch on its own — no statusline at all, or one that does not read the drop-in dir. Run:

"${CLAUDE_PLUGIN_ROOT}/bin/bridger" statusline

It installs the badge as a drop-in fragment (~/.claude/statusline.d/50-bridger.sh) and wires it without ever overwriting another tool's statusline. Then:

  • Exit 0 — done. Relay its confirmation line to the user. If this was the first-ever wiring (it just installed the dispatcher and pointed settings.json at it), the badge appears in the next Claude Code session — changing .statusLine.command is not hot-reloaded. From then on it is live: bridger register <name> lights the badge on the next statusline tick with no restart, and bridger leave clears it.

  • Output starts with NEEDS-CHOICE (followed by a tab and the user's current statusline command) — the user already runs their own statusline that does not include the badge, and bridger will not overwrite it. Show them that command and offer two ways to add the badge:

    1. Convert to the drop-in dispatcher (recommended — collision-proof). So no future statusline setup can strand any badge:

      • Copy ${CLAUDE_PLUGIN_ROOT}/hooks/statusline-dispatch.sh to ~/.claude/hooks/statusline-dispatch.sh.
      • Move their current behavior into a fragment ~/.claude/statusline.d/10-mine.sh — a small script that runs their old command with the statusline JSON on stdin (their badge keeps its place; the 10- prefix renders it first).
      • Point settings.json .statusLine.command at bash "$HOME/.claude/hooks/statusline-dispatch.sh".
    2. Chain (quick, less robust). If their command runs a script file, append to that script, before its final print:

      bridger_badge=$(bash "$HOME/.claude/hooks/bridger-statusline.sh" <<<"$input" 2>/dev/null)
      [ -n "$bridger_badge" ] && printf ' %s' "$bridger_badge"
      

    Never overwrite a statusline command you don't understand — ask first.

After wiring, confirm jq . ~/.claude/settings.json still parses.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago First seen · 63 lines · 11 tokens per session scan B d1635aae0919

Subscribe to this mod's changes

statusline is a command published in the GitHub repository HoussemDjeghri/bridger (3 stars, last pushed 16d ago), licensed MIT. It adds 11 tokens to every session and 794 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.