Security sign-off for Auwai 1.0.0
Date: 2026-11-08 Release: 1.0.0 Scope: knowledge service, local ledger, MCP server, four harness plugins, release scripts, and documentation.
Result
No critical or high findings. The release passes the security checklist with the medium and operational risks recorded below. Each item has an owner.
Evidence
| Area | Evidence |
|---|---|
| Authentication and scopes | tests/test_security.py, tests/test_knowledge_service.py |
| Cross-repository reads | scope and repository allowlist tests |
| Token rotation | two-key rotation test and constant-time comparison |
| Request limits | 10 MiB body limit, 1,000 events, 20,000 items, 256 KiB text |
| Malformed payloads | invalid JSON, unknown event kinds, non-array fields |
| Secret redaction | facts, findings, claims, AWS keys, sk- keys, private keys |
| SQL injection | literal filters on every list endpoint |
| Path metadata | traversal strings are data only; NUL bytes are rejected |
| Anonymous binding | loopback-only guard and explicit network override test |
| Hook injection | shell commands are parsed, never executed by the hook |
| Plugin parity | tests/test_plugin_parity.py hook decision vectors |
| Storage backends | 52 contract tests on SQLite, PostgreSQL 16, and the MySQL/MariaDB dialects (local MariaDB 10.5; CI 8.4/11.4) |
| Upgrades | tests/test_knowledge_migrations.py, tests/test_backend_migrations.py |
| TLS terminator | self-signed TLS proxy smoke test in tests/test_tls_proxy.py |
Commands used for the release evidence:
python3 -m unittest tests.test_security tests.test_plugin_parity
POSTGRES_URL=... MYSQL_URL=... MARIADB_URL=... \
python3 -m unittest tests.test_knowledge_service tests.test_backend_migrations
python3 -m unittest tests.test_knowledge_migrations tests.test_ledger_migrations
Residual risks
| Risk | Severity | Owner | Mitigation |
|---|---|---|---|
| Redaction is a best-effort filter | medium | maintainers | Keep secrets out of source and test data; review before sync |
| Codex requires a manual hook trust step | medium | user or admin | Review /hooks and trust the bundle after install |
| OpenCode guard does not inspect interpreter escapes | medium | harness operator | Treat the guard as a guardrail, not a sandbox |
| No built-in OIDC or user directory | medium | deployment operator | Terminate identity at a reverse proxy or use scoped tokens |
| MySQL DDL can implicitly commit | medium | database operator | Back up before migration; run --check after |
| SQLite service is single-threaded | low | deployment operator | Use PostgreSQL for multiple service processes |
| No public penetration test | low | maintainers | Re-test before exposing a service outside a trusted network |
Deployment checklist status
- Bind to loopback by default: verified.
- TLS reverse proxy example: documented and smoke-tested with a TLS terminator.
- Scoped tokens and repository allowlists: verified.
- Request size and item bounds: verified.
- Database backup and restore: operator responsibility, documented.
- No public benchmark or model endpoint required: verified.
Sign-off
Auwai 1.0.0 is approved for release with the residual risks above. The release must be re-signed if the authentication model, the hook policy, or a storage adapter changes.