cc-safety-net gui to open it. You can review decisions, edit your policy without writing JSON, draft a project policy, and install the hook for each coding agent.
For the underlying formats, see Policy, Custom rules, and Audit log.
Launch the dashboard
--no-open to get the URL without opening a browser, for example over SSH or in a container. The server runs in the foreground until you stop it with Ctrl-C. See gui for the flags and errors.
Local loopback scope
The server listens only on127.0.0.1, so nothing on your network can reach it. Each launch puts a new token in the URL, and the server rejects requests without it. A URL bookmarked from an earlier launch stops working, so run cc-safety-net gui again.
gui prints the token on stdout. An agent that ran cc-safety-net gui itself therefore holds the token and can use the dashboard, including the project-policy apply. CC Safety Net still denies an agent that edits policy.json directly or runs cc-safety-net policy apply.
The page reads only your local policy file and audit logs. When Overview opens, it makes two outbound requests without credentials: an update check against the npm registry and the repository’s public star count on GitHub. Star on GitHub uses your gh login only when you click it.
The six views
Each view has its own address, which also keeps the filters on Activity and Protections, so a reload or Back restores them.
A banner above every view shows one line for each of these conditions in the saved policy:
Command protection is off: built-in destructive command rules are not enforced. Catastrophic and custom rules still apply.Secret protection is off: sensitive files and deny paths are not blocked.A fallback configuration is being enforced: <reason>
Overview
Overview summarizes the last 7 days, or your whole retention window when retention is shorter. Status card. The card at the top shows one headline, based on the saved policy:
Needs attention. This list appears only when something needs action. Each item links to where you act on it:
A guard error means CC Safety Net could not finish checking a command, so it blocked it. See Troubleshooting if guard errors recur.
Activity
Activity lists the commands your agents ran, newest first. It opens on the last 7 days and can look back as far as your audit retention. Secret redaction recognizes only known credential shapes, so entries can still contain paths, hostnames, and names. Read Secret redaction before you share anything from this view.Filters
The decision filter defaults toBlocked, which includes guard errors. Likely false positive appears when a block records a failure stage, or when the same command was blocked twice or more in one session. Search commands or rule IDs matches rule IDs and command text, ignoring case.
The list loads at most the newest 500 entries of each decision, but the counts and tiles always cover the whole window. Narrow the window to see older entries. When Activity cannot read some log files, the footer says so, and both the list and the counts are incomplete.
Per-entry actions
Select a row to see the full command, reason, rule, and folder.Report a false positive
Report false positive prepares a public GitHub issue from the project’s false-positive form. You can edit every field first. The dialog replaces your project path with<project> and your home directory with ~. Other paths and names stay, so edit out anything you would rather not publish. Nothing reaches GitHub until you submit the form there.
Protections
Protections is where you choose what CC Safety Net blocks with its built-in protections: the safety preset, the destructive-command rules, and the secret-protection rules. Your own rulebooks are on Custom rules.My policy and Project policy at the top choose which policy you edit.
Press / to search rules by name, ID, description, or protected path. Changed from default lists only the rules you or an environment variable changed.
Saved versus unsaved
Edits collect in a draft until you select Save, which writes your user policy file. The draft survives a reload in the same browser session. While the saved policy has errors, the form shows built-in defaults and Save is disabled, so those defaults cannot overwrite your file. Use Repair first.Draft a project policy
Project policy switches Protections to a draft of the project’s policy.json, which everyone working in that folder gets on top of their own policy. The draft targets the folder you launched the dashboard from, and Change folder… picks another.
Editing a control marks it
Project. A marked path list starts empty, so the draft does not write your personal paths into the repository.
Save becomes Review and apply. The dialog shows the target path, a Setting / Now / After table of the effective policy, and a warning for each setting the draft makes weaker than your own policy. Reported weakenings lists the warnings. Nothing is written until you select Apply project policy.
The draft refuses to start with Repair your policy first while your own policy file has errors. It also cannot write to the folder that holds your user .cc-safety-net/. See The user config directory is not a project.
The draft makes the same checks as cc-safety-net policy apply. See Project policy for how the two policies merge.
Test a command
Test a command shows whether a shell command would be blocked, without running it. The test uses your unsaved edits and your custom rulebooks, so you can check a change before you save it. In a project draft, it tests your policy with the draft applied on top.
A block shows the rule ID, the reason, and the blocked part of a compound command. Use explain for the same check in the terminal.
Safety preset
Choose Standard, Strict, or Paranoid. Each includes everything in the one before it. Modes describes what each preset changes. When an environment variable raises protection, the view lists it afterAn environment variable raises protection beyond these settings:. CC Safety Net can then block more than the preset shown.
The collapsed Advanced settings card sets Fail closed, Paranoid rm -rf checks, and Paranoid interpreters to From preset, Always on, or Always off without changing the preset. It also holds Allow discarding local changes in linked git worktrees.
Command protection
The Command protection panel holds the built-in destructive-command rules, grouped by category. TheAlways on group holds the catastrophic rules, which you cannot turn off. A Strict or Paranoid badge marks a rule that needs that preset.
A note explains a value that does not come from the preset:
To allow one blocked command, turn off its rule here rather than the whole panel. See Allow a blocked command.
Reset all returns every rule in the panel to its preset value.
Secret protection
The Secret protection panel works the same way, with rules grouped by category, such asSensitive file names and Coding agent credentials. The info button on a rule that protects specific paths lists those paths.
The Coding agent settings rules ship off and show Off by default. Turn them on one at a time. See Coding CLI config tier for why. To allow one blocked file, see Allow a blocked file.
Exceptions and extra paths
The Exceptions and extra paths panel holds three path lists. Entries can be absolute or start with~/. The panel rejects your home directory and the folders above it. Paste several lines to add many entries at once.
See Allow paths, Deny paths, and Secret allow paths for which entries each list accepts.
Policy JSON
The collapsed Policy JSON card is a read-only copy of the policy the form would save. While the file has errors, it shows the file as it is on disk. In a project draft, it shows the exact file the apply would write.Repair
When the policy file has errors, Protections lists them with aRepair button. Repair keeps every valid setting and drops the invalid ones. If the file is not readable JSON, it restores the defaults.
To reset the policy completely, use Reset policy in Settings.
Custom rules
Custom rules shows the rulebooks you wrote, read-only, as they are enforced now. CC Safety Net never writes a rulebook from the dashboard. Instead, it composes a prompt for you to copy into a coding agent that writes the rule. See Custom rules for the rulebook format.Rulebooks (read-only)
Each rule shows the command it matches, itscustom.<name> ID, its reason, and the arguments that trigger it. The view does not list a rule that an override turns off. With no rulebooks, it points you to Create a rule or npx -y cc-safety-net rule init.
Problems
The Problems section appears only when there is something to report. An error there means CC Safety Net skipped a rulebook and enforces none of its rules. Look here when a rule you wrote is not firing.Create a rule (copy only)
Create a rule builds a prompt for your coding agent to write the rule. ChooseThis project or All projects, describe the rules in What should be blocked?, and select Copy prompt.
Rules match a command, its subcommands, and exact arguments. They do not match file paths. To block a file or folder, add it to Always block access to in Exceptions and extra paths.
The prompt tells your agent to use the cc-safety-net skill, or npx -y cc-safety-net rule doc when the skill is missing.
Agents
Agents installs or removes the CC Safety Net hook for each coding agent on this machine. See Installation for each agent’s setup outside the dashboard.
A failed action reports
Install failed or Uninstall failed with the command output under the row. Select Refresh agents after you install an agent or edit its config by hand.
Settings
Appearance. The dashboard savesTheme together with your language, not in your policy.
Audit log. Keep logs for sets how many days of audit records to keep, from 1 to 365. It saves as soon as you change it. It refuses with Retention unchanged while the policy needs repair, a project draft is open, or Protections has unsaved changes. See Retention.
Files. This section shows the user policy path and, when one is in force, the project policy path. When the project policy weakens your settings, a notice lists each change. To refuse those changes, see Ignore project weakenings.
Danger zone. Reset policy replaces your policy file with the defaults. It is unavailable while a project draft is open.
Dashboard language
The language menu at the bottom of the sidebar switches the dashboard between English, Japanese (日本語), and Simplified Chinese (简体中文). Until you pick one, the dashboard follows your browser’s language and falls back to English. Block reasons, rule ids, and server errors stay in English. The dashboard saves your language and theme togui.json in ~/.cc-safety-net/, or in $CC_SAFETY_NET_HOME when that variable is set. Both survive a relaunch and are not part of your policy.