Repository navigation
Risk Register
github-actions[bot] edited this page Oct 13, 2026
·
2 revisions
Canonical source:
docs/14-risk-debt/risk-register.md— this page is rendered from it on every publish; edit the source.
Comprehensive risk assessment for the ClawAI platform. Each risk is evaluated for likelihood (1-5) and impact (1-5), producing a risk score (L x I). Risks scoring 15+ require immediate mitigation.
Last updated: 2026-04-11
| Score | Likelihood | Impact |
|---|---|---|
| 1 | Rare | Negligible |
| 2 | Unlikely | Minor |
| 3 | Possible | Moderate |
| 4 | Likely | Major |
| 5 | Almost certain | Severe |
Risk Rating: Low (1-6), Medium (7-12), High (13-19), Critical (20-25)
| Aspect | Detail |
|---|---|
| Description | Ollama runtime crashes, runs out of memory, or becomes unresponsive |
| Likelihood | 3 (Possible) |
| Impact | 4 (Major -- AUTO routing degrades, LOCAL_ONLY breaks, memory extraction stops) |
| Score | 12 (Medium) |
| Mitigation | Heuristic fallback for AUTO (10s timeout). Health monitoring. Docker restart policy. Memory limits on Ollama container. |
| Status | Partially mitigated |
| Aspect | Detail |
|---|---|
| Description | One or more cloud providers experience outage or rate limiting |
| Likelihood | 3 (Possible) |
| Impact | 3 (Moderate -- fallback chain handles it) |
| Score | 9 (Medium) |
| Mitigation | Fallback chain (primary -> fallback -> local). Connector health checks. Multiple providers configured. |
| Status | Mitigated |
| Aspect | Detail |
|---|---|
| Description | PostgreSQL or MongoDB exhausts disk space |
| Likelihood | 3 (Possible) |
| Impact | 5 (Severe -- write failures cascade) |
| Score | 15 (High) |
| Mitigation | MongoDB TTL (30 days on logs). Disk monitoring needed. Data archival strategy needed. |
| Status | Partially mitigated |
| Aspect | Detail |
|---|---|
| Description | Consumer services fall behind, causing memory pressure on RabbitMQ |
| Likelihood | 2 (Unlikely) |
| Impact | 4 (Major -- delayed processing, potential crash) |
| Score | 8 (Medium) |
| Mitigation | DLQ with 3 retries. Queue depth monitoring available. Scale consumers horizontally when needed. |
| Status | Partially mitigated |
| Aspect | Detail |
|---|---|
| Description | Docker daemon crashes or Docker Compose state becomes inconsistent |
| Likelihood | 2 (Unlikely) |
| Impact | 5 (Severe -- complete system outage) |
| Score | 10 (Medium) |
| Mitigation |
restart: unless-stopped on all containers. Recovery documented. Kubernetes for production. |
| Status | Partially mitigated |
| Aspect | Detail |
|---|---|
| Description | JWT tokens accessible to XSS attacks |
| Likelihood | 2 (Unlikely -- React escaping, CSP headers, no dangerouslySetInnerHTML) |
| Impact | 5 (Severe -- full account takeover) |
| Score | 10 (Medium) |
| Mitigation | Helmet headers. React XSS protection. Short token lifetime. Refresh rotation. httpOnly cookies planned (TD-008). |
| Status | Risk accepted; migration planned |
| Aspect | Detail |
|---|---|
| Description | ENCRYPTION_KEY compromise exposes all provider API keys |
| Likelihood | 2 (Unlikely -- env vars not committed, requires server access) |
| Impact | 5 (Severe -- financial abuse of provider accounts) |
| Score | 10 (Medium) |
| Mitigation | AES-256-GCM encryption. Log redaction. Only connector-service accesses keys. Secrets manager planned. |
| Status | Mitigated with encryption |
| Aspect | Detail |
|---|---|
| Description | Some string fields may lack adequate length restrictions |
| Likelihood | 2 (Unlikely -- Zod enforced, Prisma parameterizes) |
| Impact | 3 (Moderate -- oversized payloads, slow queries) |
| Score | 6 (Low) |
| Mitigation | Zod .max() on all strings/arrays. Prisma ORM. Rate limiting. |
| Status | Mitigated |
| Aspect | Detail |
|---|---|
| Description | Internal HTTP calls between services carry no authentication |
| Likelihood | 2 (Unlikely -- Docker network isolation) |
| Impact | 3 (Moderate -- unauthorized data access if network compromised) |
| Score | 6 (Low) |
| Mitigation | Docker network isolation. Nginx only routes external traffic. mTLS planned for production. |
| Status | Risk accepted |
| Aspect | Detail |
|---|---|
| Description |
FleetController.listMembers, listDevices, addMember and SamlController.setMetadata (apps/claw-agent-service/src/modules/fleet/) never check that the caller belongs to the organisation. A signed-in user who knows an organisation id can add a member to it, and one who knows a slug can set its SAML metadata. |
| Likelihood | 3 (Possible -- ids are not secret once shared; no UI, API only) |
| Impact | 4 (Major -- a self-added OWNER can then change the organisation's coding-agent policy) |
| Score | 12 (High) |
| Mitigation | Fixed in commit cbe566511: OrganizationAccessService checks membership and role in the service layer; outsiders get 404; only an OWNER grants OWNER. Production had 0 organisations, so nothing was exploited. REQ-SEC-001. |
| Status | Closed (2026-09-26) |
| Aspect | Detail |
|---|---|
| Description | Found by the chat capability audit (2026-09-29). (a) useMemory=false on a chat stops memories being injected into it, but memory-service handleMessageCompleted still extracts memories from that chat and may auto-approve them. (b) A chat with useCrossThreadContext=false reads no other chat, but findCandidateThreads does not exclude it, so its content can still be retrieved INTO other chats. Both stay within the same user (no cross-tenant exposure). |
| Likelihood | 4 (Likely -- the default path for anyone who turns memory off in one chat) |
| Impact | 3 (Moderate -- a user's own content resurfaces against their stated choice; no other user sees it) |
| Score | 12 (High) |
| Mitigation | Fixed 2026-09-30 (chat-supremacy Batch 3): message.completed carries useMemory and memory-service skips extraction when false; findCandidateThreads requires useMemory and useCrossThreadContext on every candidate. Rule 57 §15, ADR-087 addendum, REQ-CHAT-002. |
| Status | Closed (2026-09-30) |
| Aspect | Detail |
|---|---|
| Description | Every component runs as a single instance |
| Likelihood | 3 (Possible) |
| Impact | 4 (Major -- feature or total outage) |
| Score | 12 (Medium) |
| Mitigation | Docker restart policies. Health monitoring. Stateless design enables future scaling. Kubernetes planned. |
| Status | Partially mitigated |
| Aspect | Detail |
|---|---|
| Description | Services cannot scale to handle load spikes |
| Likelihood | 3 (Possible) |
| Impact | 3 (Moderate -- degraded performance) |
| Score | 9 (Medium) |
| Mitigation | Stateless services. Competing consumers in RabbitMQ. PgBouncer needed. |
| Status | Architecture ready; infrastructure not |
| Aspect | Detail |
|---|---|
| Description | Redis/RabbitMQ/Nginx failure affects all services |
| Likelihood | 2 (Unlikely) |
| Impact | 5 (Severe) |
| Score | 10 (Medium) |
| Mitigation | Graceful degradation (rate limiting fallback). RabbitMQ publisher retry. Redis Sentinel and RabbitMQ cluster for production. |
| Status | Partial |
| Aspect | Detail |
|---|---|
| Description | No automated backup for any database |
| Likelihood | 4 (Likely -- without backups, the need increases over time) |
| Impact | 5 (Severe -- permanent data loss) |
| Score | 20 (Critical) |
| Mitigation | Immediate: Implement pg_dump/mongodump daily. Test restore within 2 weeks. Store backups off-host. WAL archiving for PG. |
| Status | NOT MITIGATED -- highest priority |
| Aspect | Detail |
|---|---|
| Description | Schema migrations fail mid-execution |
| Likelihood | 2 (Unlikely -- PostgreSQL transactional DDL) |
| Impact | 4 (Major -- service cannot start) |
| Score | 8 (Medium) |
| Mitigation | Prisma transactions. Test on data copy. Rollback scripts. Never modify existing migrations. |
| Status | Partially mitigated |
| Aspect | Detail |
|---|---|
| Description | Loss of encrypted connector configs requires re-entering all API keys |
| Likelihood | 2 (Unlikely) |
| Impact | 4 (Major) |
| Score | 8 (Medium) |
| Mitigation | Database backups (when implemented). Document configured connectors. Export/import feature planned. |
| Status | Depends on DAT-001 |
| Aspect | Detail |
|---|---|
| Description | Log data expires after 30 days; audit investigations may need older data |
| Likelihood | 3 (Possible) |
| Impact | 3 (Moderate -- incomplete audit trail) |
| Score | 9 (Medium) |
| Mitigation | Audit logs (claw_audit) have NO TTL. Only client/server logs expire. Archive to cold storage if needed. |
| Status | Partially mitigated |
| Aspect | Detail |
|---|---|
| Description | N+1 HTTP calls for memories, files, context packs |
| Likelihood | 3 (Possible) |
| Impact | 3 (Moderate -- 2-5s delay) |
| Score | 9 (Medium) |
| Mitigation | Parallelize HTTP calls. Batch endpoints. Redis caching for context packs. |
| Status | Not mitigated |
| Aspect | Detail |
|---|---|
| Description | First request takes 10-30s for model loading |
| Likelihood | 4 (Likely) |
| Impact | 2 (Minor -- only first request) |
| Score | 8 (Medium) |
| Mitigation | Ollama memory caching. Pre-warm via health check. Document expected behavior. |
| Status | Partially mitigated |
| Aspect | Detail |
|---|---|
| Description | Extraction falls behind under high message volume |
| Likelihood | 2 (Unlikely) |
| Impact | 3 (Moderate -- delayed extraction, Ollama contention) |
| Score | 6 (Low) |
| Mitigation | Async via RabbitMQ (non-blocking). DLQ prevents queue blocking. Dedicated Ollama instance possible. |
| Status | Risk accepted |
| Aspect | Detail |
|---|---|
| Description | Cloud providers change APIs or deprecate models |
| Likelihood | 3 (Possible) |
| Impact | 3 (Moderate -- one provider stops until adapter updated) |
| Score | 9 (Medium) |
| Mitigation | Adapter pattern isolates changes. Fallback chains. Monitor provider changelogs. Pin SDK versions. |
| Status | Mitigated by architecture |
| Aspect | Detail |
|---|---|
| Description | Unrestricted usage of expensive models |
| Likelihood | 3 (Possible) |
| Impact | 4 (Major -- financial impact) |
| Score | 12 (Medium) |
| Mitigation | Usage ledger tracking. COST_SAVER/LOCAL_ONLY modes. Spending alerts planned. Per-user limits planned. |
| Status | Partially mitigated |
| Aspect | Detail |
|---|---|
| Description | Data sent to cloud providers may violate regulations |
| Likelihood | 3 (Possible) |
| Impact | 5 (Severe -- legal liability) |
| Score | 15 (High) |
| Mitigation | PRIVACY_FIRST and LOCAL_ONLY modes. Routing transparency. Audit trail. Data classification needed. DPA templates needed. |
| Status | Partially mitigated |
| Aspect | Detail |
|---|---|
| Description | The 2026-09-26 positioning ("bring your team", ADR-126) invites business buyers to expect SSO and a shared team account; neither exists, and the Team plan's seeded description promises pooling that is not built. |
| Likelihood | 3 (Possible) |
| Impact | 3 (Moderate -- refunds, churn, trust) |
| Score | 9 (Medium) |
| Mitigation | Copy bounded by the flagship catalog gap table; REQ-POS-005 and REQ-POS-006 track the missing features. |
| Status | Open |
Impact
5 | DAT-001(20) SEC-001(10) OPS-003(15)
| SEC-002(10) REL-003(10) OPS-005(10)
4 | DAT-002(8) REL-001(12) BIZ-002(12)
| DAT-003(8) REL-002(9) OPS-001(12) OPS-004(8)
3 | SEC-004(6) PERF-001(9) BIZ-001(9) BIZ-003(15)
| PERF-003(6) DAT-004(9) OPS-002(9)
2 | SEC-003(6) PERF-002(8)
|
1 |
+-------------------------------------------
1 2 3 4 5
Likelihood
| Rank | ID | Risk | Score | Required Action |
|---|---|---|---|---|
| 1 | DAT-001 | No automated backups | 20 | Implement automated daily backups for all databases |
| 2 | OPS-003 | Database disk full | 15 | Set up disk monitoring and alerting |
| 3 | BIZ-003 | Data privacy compliance | 15 | Document data flows; implement classification |
| 4 | REL-001 | Single points of failure | 12 | Plan HA strategy; implement health-based restarts |
| 5 | BIZ-002 | Cloud AI cost overruns | 12 | Implement spending alerts and limits |
ClawAI Wiki · source-controlled under wiki/ · generated/mirrored from the current repository knowledge layer.
ClawAI Wiki
Product
- Product-Vision
- Flagship-Features
- Business-Overview
- Requirements-Register
- Drift-Log
- Runtime-Managed-Connector-Providers
- Threads
- ADR-Index
Architecture
- System-at-a-Glance
- Architecture-Map
- System-Architecture
- Message-Flow
- End-to-End-Data-Flow
- Routing-Engine
- Event-Bus
- Security-Architecture
Platform
- Backend-Services
- Frontend-Architecture
- Shared-Packages
- Database-Reference
- API-Reference
- Provider-Catalog
- Memory-and-Context-Architecture
- File-Support-Architecture
- Research-and-Web-Crawling
Runtime & Ops
- Docker-Guide
- Nginx-Reference
- CI-CD-Pipeline
- Logging-and-Observability
- Operational-Runbooks
- Troubleshooting
Quality
Engineering OS
- AI-Native-Engineering-OS
- Generated-Manifests
- Rules-Catalog
- Skills-Catalog
- Context-Layer
- Engineering-Memory
- Tooling-and-Automation
- Scripts-and-Operations
- ESLint-and-Architecture-Enforcement
- Extended-Work-Skills
Agents
Reference