Autopilot — set and forget
Autopilot is SigmaShake's autonomous governance mode. Once enabled, the daemon periodically pulls newer versions of installed Hub rulesets, gated by a configurable trust tier. Every action is recorded in a transparency ledger, and you can pause, resume, or roll back at any time.
Users don't want to think about writing rules. They want their AI agent to not do bad things — automatically, quietly, and continuously.
Autopilot is the machinery behind that experience.
What autopilot does today
- Periodic Hub upgrades. The ssg daemon checks
hub.sigmashake.comon an interval (default: every 24 hours) for newer versions of every ruleset pinned in~/.sigmashake/hub-pins.json. Updates that meet your trust tier are applied automatically using the same integrity + Ed25519 verification path as a manualssg hub pull. - Trust-gated installs. Only rulesets matching your configured trust tier are auto-applied. By default that's
certified-signed— the ruleset must carry both the Hub's Certified badge and a verifiable Ed25519 signature. - Transparency ledger. Every autopilot decision — check, skip, apply, pause, rollback — is written to
~/.sigmashake/autopilot-ledger.jsonl. Inspect it any time withssg autopilot log. - Pause / resume. Autopilot respects a pause flag. Invoke
ssg autopilot pausebefore risky work;ssg autopilot resumewhen you're done.
Quick start
Autopilot is on by default for new installs. To verify:
ssg autopilot status
Sample output:
Autopilot status:
Active: yes
Enabled: yes
Trust tier: certified-signed
Hub update: every 24h
Insights scan: every 24h
Trust tiers
Configure in .sigmashake/config.toml:
[autopilot]
enabled = true
trust_tier = "certified-signed"
hub_update_interval_ms = 86400000
insights = true
insights_interval_ms = 86400000
| Tier | Criteria | Use when |
|---|---|---|
off | Never auto-install | You want full manual control |
certified | Ruleset has the Hub Certified badge | You're OK trusting Hub review alone |
certified-signed | Certified AND Ed25519-signed (default) | Recommended — full trust chain |
official-only | Published by the SSG official key | Strictest — only SSG-authored rulesets |
Overrides:
SSG_AUTOPILOT=0forces autopilot off for the current processSSG_AUTOPILOT_TRUST=offoverrides the file-config trust tier
CLI
ssg autopilot status # Show config + pause state + recent actions
ssg autopilot pause [--reason=X] # Suspend autonomous actions
ssg autopilot resume # Re-enable
ssg autopilot log [--limit=N] # Dump the ledger
ssg autopilot rollback <id> # Show command to restore the last pre-autopilot version
All commands accept --json for machine-readable output.
Rollback
If an auto-applied update introduces a regression, every autopilot hub-update-apply is recorded with the fromVersion it replaced. To revert:
ssg autopilot log --limit 20 # find the applied version
ssg autopilot rollback rules-xyz # prints the hub-pull command
ssg hub pull rules-xyz@v3 --force-reinstall
Transparency
Autopilot is built on the same deterministic primitives as the rest of ssg: every action is logged, every install passes the standard Ed25519 + hash-pin verification, and you can pin a specific ruleset version at any time. Nothing happens invisibly.
Privacy
Autopilot makes outbound HTTP requests only to hub.sigmashake.com to query ruleset metadata. No conversation history, no audit log, and no local file contents are transmitted by autopilot itself. (Audit-sync is a separate Pro/Enterprise feature with its own opt-in.)
Limitations (current release)
- Autopilot upgrades already-installed rulesets. It does not discover new rulesets or install unrelated ones.
- The insights-based rule-synthesis loop (synthesising rules from conversation history patterns) is not yet wired to the daemon. Use
ssg insights/ssg suggestmanually for now. - Dashboard "always allow / always deny" one-click decisions synthesise rules into
autopilot.rulesimmediately via the autopilot rule-writer.
Disabling
ssg autopilot pause # temporary
Or in .sigmashake/config.toml:
[autopilot]
enabled = false
Or permanently via env:
export SSG_AUTOPILOT=0