sonder-security-and-privacy

Reviews diffs against Sonder Runtime security boundaries and privacy consent gates.

6|3|Updated Jul 3, 2026
One-click install
npx skills add https://github.com/Krilliac/Sonder-runtime --skill sonder-security-and-privacy-krilliac
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: sonder-security-and-privacy
Source: https://github.com/Krilliac/Sonder-runtime/tree/main/.claude/skills/sonder-security-and-privacy
Command: npx skills add https://github.com/Krilliac/Sonder-runtime --skill sonder-security-and-privacy-krilliac

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Maintainers reviewing changes to the Sonder Runtime need to know which security boundaries and privacy gates must never be weakened, and which code mechanism enforces each one, so a seemingly harmless diff does not silently open a consent gate, widen a file root, or turn a fail-closed check into fail-open. ## Core Features & Use Cases - Boundary catalog with enforcing mechanisms: Documents the network posture ladder, consent gates (SONDER_ALLOW_CLOUD, SONDER_WEB_TOOLS, and others), guarded file/execution tool ceilings, and privacy classifier rules, each mapped to the exact source file and constant that enforces it. - Diff review checklist: Provides nine blocking questions for any change touching security surfaces, covering root widening, redaction silencing, fail-open conversions, and capability-boolean leaks into request contexts. - Operational security guidance: Covers key rotation, unsafe-lab activation gating, TUF-signed update trust, and the never-share list for memory stores and personal training data. - Use Case: A maintainer receives a pull request that lets an adapter read SONDER_WEB_TOOLS before bootstrap; the skill flags it as the known web_tools.py fallback trap that silently flips the default open. ## Quick Start Ask whether a proposed diff that exposes the runtime on a non-loopback address weakens the Sonder security posture.

Frequently Asked Questions about sonder-security-and-privacy

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I review a diff that touches Sonder Runtime security boundaries?

Find the named mechanism enforcing each boundary rather than trusting docstrings, then apply the nine-question checklist: root widening, consent-gate overrides, redaction silencing, fail-open conversions, ceiling raises, tool advertisement mismatches, capability booleans in request context, subprocess hygiene regressions, and never-share list violations.

What consent gates must stay default-off in a local-first AI runtime?

SONDER_ALLOW_CLOUD, SONDER_WEB_TOOLS, SONDER_ALLOW_REMOTE_OLLAMA, SONDER_LOCATION_CONSENT, SONDER_EXPOSE_REASONING, and SONDER_ALLOW_PRIVATE_COT all default to off. Runtime policy, model output, HTTP, and MCP can never enable them; each is an independent explicit opt-in.

Can the Sonder runtime bind to a non-loopback address for remote access?

A non-loopback bind is rejected before the socket opens unless both tls_terminated_by_proxy is true and a SONDER_API_KEY of at least 24 characters is set. The recommended topology keeps the listener on loopback behind a TLS reverse proxy.

Why does the web_tools.py SONDER_WEB_TOOLS fallback matter for security?

The legacy root module falls back to enabled when the variable is unset in the environment, safe only because bootstrap always exports the resolved value first. A diff letting an adapter read the variable before bootstrap silently flips the default open.

What data must never be committed or exported from the runtime?

memory.db, personal training datasets, personal LoRA adapters, and merged personal models are gitignored and never shared, since weights memorize training data. Only lessons passing the 20-rule privacy classifier are candidates for the opt-in local export file.

When should the unsafe lab mode be used and what gates it?

Unsafe lab mode is only for disposable isolated evaluation environments and provides no containment. Activation requires an exact 132-character acknowledgement string and fails closed on non-loopback hosts, root execution, cloud consent, or malformed Ollama hosts.