This risk register is compiled from the current repository implementation and CI/CD configurations (.github/workflows/ci.yml, cd.yml, llmsecops.yml).
| Risk ID | Risk Item | Likelihood | Impact | Residual Risk |
|---|---|---|---|---|
| R-01 | Prompt Injection / unauthorized command injection | Medium | High | Medium-Low |
| R-02 | Unsafe content output | Low-Medium | High | Low |
| R-03 | LLM structured output bias/hallucination | Medium | Medium | Low |
| R-04 | External dependency and supply chain risk | Medium | High | Medium |
| R-05 | Key leakage and credential misuse | Low-Medium | High | Medium-Low |
| R-06 | Upstream API anomalies causing availability degradation | Medium | Medium | Medium |
| R-07 | Insufficient data minimization (thread state persistence) | Medium | Medium | Medium |
| R-08 | Adversarial samples bypassing static rules | Medium | High | Medium |
Attack Surface
userRequest.requestText and naturalLanguageExisting Controls
detectPromptInjection(...) (src/security/guardrails.ts) applies regex detection for common injection statements, with zero-width character and homoglyph normalization.risk_guard uses LLM semantic scanning (RiskGuardSchema) to detect variant attacks.BLOCKED_PROMPT_INJECTION prefixed flag.routeFromRiskGuard(...) routes flow to plan_synthesizer safe refusal path.Verification Evidence
tests/unit/agents/risk-guard.agent.test.tstests/redteam/guardrails.redteam.test.ts (red-team adversarial testing)Residual Risk
Attack Surface
Existing Controls
detectUnsafeOutput(...) (src/security/guardrails.ts)plan_synthesizer rescans generated summary and appends safetyFlagsrisk_guard LLM semantic layer also scans final outputsVerification Evidence
tests/unit/security/guardrails.test.tstests/redteam/guardrails.redteam.test.tsResidual Risk
Attack Surface
Existing Controls
withStructuredOutput(...) + Zod schema constraints on all LLM agent outputs.Verification Evidence
tests/integration/*.test.ts (FakeStructuredChatModel driven)tests/evals/travel-planner.eval.ts (completeness evaluation)Residual Risk
Attack Surface
Existing Controls (CI/CD Enabled)
npm audit --omit=dev (CI / LLMSecOps)scripts/ai-dependency-scan.ts, LLMSecOps)Verification Evidence
.github/workflows/ci.yml.github/workflows/cd.yml.github/workflows/llmsecops.ymlResidual Risk
Attack Surface
OPENAI_API_KEY, DUFFEL_API_TOKEN, POSTGRES_URL, LANGSMITH_API_KEYExisting Controls
require* accessors.src/tools/common/duffel.ts).ToolError, avoiding exposing sensitive context to callers.model-config-audit workflow scans source code for hardcoded API key patterns.Residual Risk
Attack Surface
Existing Controls
requestJson(...) unified timeout, exponential backoff retry with jitter, and AbortController.ToolError categories.ToolError, avoiding silent swallowing.Verification Evidence
tests/unit/tools/http.test.tssrc/tools/common/http.tsResidual Risk
Risk Description
PlannerState contains full userRequest; default checkpointer is Postgres persistence.userId).Existing Controls
thread_id).Recommended Controls
userId mapping/anonymization strategy in production.Risk Description
detectPromptInjection regex rules.Existing Controls
normalizeForScan already normalizes zero-width characters and common homoglyphs.risk_guard LLM semantic layer is the primary defense; static rules serve as fast pre-filter.tests/redteam/) continuously evaluate bypass rates.Verification Evidence
tests/redteam/guardrails.redteam.test.tsResidual Risk
safetyFlags hit high-risk markersthreadId and stop retriesGET /plan/:threadId snapshot + decisionLog| Priority | Recommendation |
|---|---|
| High | Add a dedicated lightweight classifier model for prompt injection (rules + LLM + classifier triple layer) |
| High | Introduce data minimization and expiration cleanup policies for thread state |
| Medium | Add authentication layer for /plan (by user/thread) |
| Medium | Establish a larger-scale security regression corpus (injection, privilege escalation, jailbreak) |
| Medium | Incorporate red-team detection rate into CI quality dashboard |
| Low | Output unified audit event stream for risk hits (for SIEM integration) |