Skip to main content
CC Safety Net can display its state in Claude Code’s status line as a single line of emoji indicators, showing the effective safety level at a glance. This gives you a persistent view of whether protection is enforcing and at what level — without having to run a separate diagnostic command. The status line is Claude Code only. It reads the enabledPlugins["cc-safety-net@cc-marketplace"] entry from ~/.claude/settings.json (or $CLAUDE_SETTINGS_PATH) to decide whether the Claude Code plugin is enabled. If you installed CC Safety Net for a different agent, or as a manual Claude Code hook rather than the marketplace plugin, this indicator is not relevant to you.

Configure the status line

Add a statusLine entry to your ~/.claude/settings.json. Choose the runner that matches your environment:

Status line indicators

The output is exactly one line with this shape:
When the Claude Code plugin is disabled, the whole line collapses to a single indicator instead:

Level indicator

Exactly one level emoji is always present. It reports the effective safety level after policy.json and the environment have been combined — not which environment variable you happened to set. The custom indicator appears in two cases: the enabled capabilities match no preset (for example CC_SAFETY_NET_PARANOID=1 on top of the default level, which turns on both paranoid capabilities but not fail_closed), or a per-rule entry in destructive_command_protection.overrides changes a destructive-command rule away from the state its level would have given it. See Modes for what each level blocks, and Environment for the precedence rules that produce the effective level.

Worktree and degraded indicators

These are appended after the level emoji, in this order: The ⚠️ marker is the only passive signal that configuration is degraded. It does not say which source failed — run npx cc-safety-net status for the diagnostics, or npx cc-safety-net doctor for the full report. See Configuration recovery for what ready and degraded mean and how to repair each one.

Plugin-disabled indicator

This is the same condition that status reports as the first item under Not active — the verdict stays ready or degraded, because a disabled plugin affects only the Claude Code integration. The statusline command checks this condition first and replaces the rest of the line, so no level, worktree, or degraded indicator appears alongside .
The state specifically means the Claude Code marketplace plugin is disabled. If you run CC Safety Net as a manual Claude Code hook (not the marketplace plugin), or for a different agent entirely, the status line may show even though protection is active — it only reflects the enabledPlugins entry in ~/.claude/settings.json.

Status line and status command differences

Both commands load the policy snapshot and resolved environment. They show the configuration state in different formats. status prints a multi-line terminal report with a verdict and one diagnostic per issue. The status line prints one line of emoji indicators and no diagnostics. Use status when you want to know why; use the status line when you want a persistent at-a-glance marker. See CLI commands for the full status and statusline syntax, output, and exit behavior.
Changes to ~/.claude/settings.json take effect immediately — no restart of Claude Code is needed. The statusline command accepts -cc as a short alias for --claude-code.
When you pipe another command into statusline, its output is prefixed as <piped output> | 🛡️ CC Safety Net …. JSON piped on stdin is discarded rather than echoed, because Claude Code pipes its own status payload into the command.
Last modified on August 11, 2026