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.
/plugin marketplace add HoussemDjeghri/bridger/plugin install bridgerWrote 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.
[](https://agentmods.dev/commands/houssemdjeghri/bridger/statusline)<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>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.
| Model | Per session | Once 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 |
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. 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. Armwait --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.jsonat it), the badge appears in the next Claude Code session — changing.statusLine.commandis not hot-reloaded. From then on it is live:bridger register <name>lights the badge on the next statusline tick with no restart, andbridger leaveclears 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:-
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.shto~/.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; the10-prefix renders it first). - Point
settings.json.statusLine.commandatbash "$HOME/.claude/hooks/statusline-dispatch.sh".
- Copy
-
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.
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.
- 8d ago First seen · 63 lines · 11 tokens per session scan B d1635aae0919
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.
Other commands, from other repositories
wrap
You are closing a Claude Code session. Execute all steps below in order.
unwrap
You are resuming a Claude Code session. Execute all steps below in order — no confirmation needed.
wrap-find
Search session logs for a keyword or phrase. The search term is everything after /wrap-find in the user's message.
start
Start watching the current project with Bonsai.
mute
Silence Bonsai temporarily for this project (or all projects with --global).
discuss
Discuss a Bonsai observation in the current session.