User Guide

May 26, 2026 · View on GitHub

This guide covers the most common tasks after installing Sage. For installation, see Getting Started.

Verify your installation

After installing Sage, confirm it's working by asking your AI agent to run this harmless canary command:

echo __sage_test_ask_cmd_8f2e6b71__

The marker string matches a deterministic canary rule (DUMMY-CMD-ASK-001) shipped with every connector, so Sage will always flag it regardless of sensitivity preset. Under balanced (default) or relaxed you'll see your platform's approval flow; under paranoid, OpenClaw and OpenCode promote the ask to a deny so you'll see a block instead. For a deny-class canary that blocks on every preset, see the Getting Started verification step.

What you should see:

  • Claude Code — a permission dialog appears asking you to approve or deny the command
  • Cursor / VS Code — a notification or dialog prompts you before the command runs
  • OpenClaw — a native approval dialog appears inline
  • OpenCode — a native OpenCode approval dialog appears via sage_approve

Claude Code:

Sage blocking a command in Claude Code

Cursor:

Sage blocking a command in Cursor

If the command runs without any prompt, check that Sage is installed correctly. On Cursor/VS Code, run Sage: Show hook health from the command palette.

Understanding verdicts

Every tool call Sage evaluates gets one of three verdicts:

VerdictMeaningWhat to do
AllowNo threats detectedNothing — the action proceeds
AskSuspicious, but not confirmed maliciousReview the action and approve or deny
DenyConfirmed threatThe action is blocked automatically

Handling flagged actions

When Sage flags an action with an ask verdict, you can approve or deny it. The exact options depend on your platform:

PlatformApproval options
Claude CodeApprove or deny via the native permission dialog. Approval is session-only — Sage suggests adding an exception for permanent allowlisting.
Cursor / VS CodeApprove or deny via the IDE dialog. Approval is session-only.
OpenClawApprove once, allow always (auto-creates an exception rule), or deny via native approval dialog.
OpenCodeApprove or deny via the native approval dialog (surfaced when the agent calls sage_approve). Approval is session-only.

To permanently suppress a pattern on any platform, add an exception rule manually — see below.

Managing false positives

If Sage repeatedly flags actions you trust, you have several options:

Quick: allow always (OpenClaw only)

On OpenClaw, select Allow always when prompted. This automatically creates an exception rule in ~/.sage/exceptions.json.

On other platforms, approval is session-only. To permanently allow a pattern, add an exception rule manually:

Add an exception rule

Edit ~/.sage/exceptions.json (or run Sage: Open exceptions in Cursor/VS Code):

{
  "rules": [
    {
      "decision": "allow",
      "match": "executable",
      "pattern": "docker build",
      "reason": "Docker builds are part of my workflow"
    }
  ]
}

Exception rules support matching by executable name, domain, file path, plugin key, or regex. See Exceptions for the full reference and examples.

Report a false positive

Sage includes an MCP server with a built-in false positive reporting tool. If your agent has access to Sage's MCP tools, you can ask it to report a false positive directly:

  1. Ask your agent: "List recent Sage audit entries" — this calls sage_list_audit_entries
  2. Identify the entry that was a false positive
  3. Ask your agent: "Report this as a false positive because [reason]" — this calls sage_report_false_positive

The report is sent to Gen Digital so the detection rules can be improved. No source code or file content is included in the report.

Note: The MCP tools are available automatically in Cursor. In VS Code, start the MCP server first via MCP: List ServersageStart server. In Claude Code, the MCP server is registered by the plugin.

Disable a specific rule

If a particular threat rule doesn't apply to your workflow, disable it by ID in ~/.sage/config.json:

{
  "disabled_threats": ["CLT-CMD-001"]
}

Threat IDs are listed in the YAML files under threats/ in the source repository. See Configuration.

Adjusting sensitivity

Sage has three sensitivity presets that control how aggressively it flags actions:

PresetBehavior
paranoidFlags anything remotely suspicious
balancedBlocks confirmed threats, prompts on suspicious (default)
relaxedOnly blocks high-confidence threats

Set in ~/.sage/config.json:

{
  "sensitivity": "paranoid"
}

See Configuration for details.

Going fully offline

Sage's detection layers can run entirely offline. To disable all cloud services:

{
  "url_check": { "enabled": false },
  "file_check": { "enabled": false },
  "package_check": { "enabled": false },
  "community_iq": false
}

Local heuristics (300+ YAML-based threat patterns) handle detection without network access. A lightweight session-start version check still posts basic environment info (Sage version, agent runtime, OS, installation ID — no commands, URLs, or file content); see Privacy for the full breakdown.

Disabling Sage temporarily

PlatformHow to disable
Claude CodeUninstall the plugin or run Claude without the plugin
Cursor / VS CodeRun Sage: Disable protection until restart from the command palette
OpenClawopenclaw plugins uninstall sage
OpenCodeRemove the plugin path from opencode.json

You can also disable individual detection layers in ~/.sage/config.json without uninstalling. See Configuration.

Reporting issues