nxr executes code from Nix flakes. It must not imply otherwise.
Threat model, trust boundaries, and runner security requirements are documented in:
- docs/ARCHITECTURE.md — §8 Security model
- docs/CONTRACT_SUMMARY.md
- docs/EXECUTION_CONTEXT.md — planned secret delivery, trust approvals, schema v2
- docs/adr/README.md — security-related ADRs (e.g. metadata sanitization, secrets as references)
Before tagging a release or adopting nxr in CI, confirm:
- Trust the flake — remote references and substituters follow your organization's Nix trust policy.
- Inspect before run — use
nxr plan <app>or--dry-runto see the exactnix runcommand. - No shell interpolation — app names and arguments are passed to Nix without shell evaluation (ADR-0006).
- Untrusted metadata — app descriptions and flake metadata are sanitized before terminal rendering (ADR-0014).
- Environment policy — use
nxr doctor --clean-envwhen validating apps that must not depend on a dev-shellPATH. - No hidden telemetry — V1 collects no usage data (docs/TELEMETRY.md).
V1.0 engineering review: docs/SECURITY_REVIEW_V1.md.
Full requirements: ARCHITECTURE.md §8.
Until a dedicated process is published, report security issues privately to the repository maintainers (do not open a public issue for exploitable flaws).