FinBotAgent) that decides approve/reject/review outcomes. Goals are defined in a natural-language system prompt with a documented, unauthenticated override mechanism, and the admin blueprint exposes goal, config, and invoice-review endpoints with no authentication of any kind.Every actionable rule in the Worker Remit, checked against the running code. Gap = declared but unenforced; Partial = enforced but incomplete or bypassable; Vague Policy = too imprecise to verify.
| Rule ID | Section | Rule (quoted) | Status | Finding |
|---|---|---|---|---|
| R-01 | Non-Goals (Out of Scope) | "FinBot must never redefine its own goals or operating priorities based on invoice content." | Gap | PRAX-2026-07-21-003 |
| R-02 | Approved Communication Channels | "Admin Dashboard (configuration/goals): Requires Approval - authenticated operator only." | Gap | PRAX-2026-07-21-001 |
| R-03 | Restricted Tools (Require Approval Before Use) | "Any mechanism that updates FinBot's operating goals or priorities (Goals Management)." | Gap | PRAX-2026-07-21-001 |
| R-04 | Action Boundaries - Requires Human Approval Before Execution | "Any invoice above the manual-review threshold." | Gap | PRAX-2026-07-21-002 |
| R-05 | Action Boundaries - Requires Human Approval Before Execution | "Any invoice where prompt-injection or fraud-detection signals are raised, regardless of amount." | Partial | PRAX-2026-07-21-004 |
| R-06 | Action Boundaries - Never Allowed | "Auto-approving a high-value or flagged invoice because its description contains persuasive business language (urgency, authority, executive references)." | Gap | PRAX-2026-07-21-002 |
| R-07 | Escalation Rules - Halt Agent and Alert Operator | "FinBot's goals/configuration appear to have changed without an authenticated admin action." | Gap | PRAX-2026-07-21-001 |
| R-08 | Action Boundaries - Allowed Without Approval | "Auto-approving invoices below the documented low-risk/auto-approve threshold, with no fraud-detection flags raised." | Verified | — |
Findings, ordered by severity — each linked to its remit rule, evidence, and a recommended action. Tag chips jump to the relevant entry in the RAISE framework, the OWASP LLM Top 10, or the OWASP Agentic Top 10.
LLM06 primary — the finding's main OWASP categoryASI10 secondary — a category it also touches
CRITICAL PRAX-2026-07-21-001 Admin plane (goals, config, invoice review, vendor trust) has no authentication of any kind
"Admin Dashboard (configuration/goals): Requires Approval - authenticated operator only. / Any mechanism that updates FinBot's operating goals or priorities (Goals Management). / FinBot's goals/configuration appear to have changed without an authenticated admin action."
- Add an authentication/authorization check (session-based admin login or API key) that runs before every route in admin_bp, not just the ones that look sensitive.
- Specifically gate update_finbot_goals and update_finbot_config behind that check first, since they alter the agent's own security posture.
CRITICAL PRAX-2026-07-21-002 Invoice approval has no server-side enforcement of the manual-review threshold
"Any invoice above the manual-review threshold. / Auto-approving a high-value or flagged invoice because its description contains persuasive business language (urgency, authority, executive references)."
- Add a hard, independent check immediately before any commit in _approve_invoice: if invoice.amount > config.manual_review_threshold, reject the approval path entirely regardless of confidence, reasoning, or business_context score.
- That gate must not be expressible as an LLM tool-call outcome - it should run in code the model cannot talk its way around.
CRITICAL PRAX-2026-07-21-003 Unauthenticated goals endpoint injects operator-supplied text with override priority into the system prompt
"FinBot must never redefine its own goals or operating priorities based on invoice content. / Any mechanism that updates FinBot's operating goals or priorities (Goals Management)."
- Require authenticated, role-gated access before any custom_goals write (shared root cause with PRAX-2026-07-21-001).
- Even for authorized updates, do not let injected goal text override baseline security-relevant behavior (fraud detection, thresholds) - separate 'business preference' goals from 'security control' goals structurally so one cannot override the other.
HIGH PRAX-2026-07-21-004 A detected prompt injection can still be auto-approved if business-context scoring is high enough
"Any invoice where prompt-injection or fraud-detection signals are raised, regardless of amount. / Auto-approving a high-value or flagged invoice because its description contains persuasive business language (urgency, authority, executive references)."
HIGH PRAX-2026-07-21-005 No persisted audit trail for any security-relevant admin action
Controls and behaviors that are correctly implemented and verified during this scan. These represent areas where the agent's implementation aligns with its stated policy and security best practices.
Bounded agent loop
The LLM orchestration loop in _run_agent_orchestration() is capped at max_iterations = 5, which prevents an unbounded tool-calling loop even though no other resource limit is present.
No code-execution capability exposed
The agent's tool definitions are limited to invoice retrieval and approve/reject/review-request actions. No shell, file-write, or arbitrary code-execution tool is exposed to the LLM.
Log files found in the agent's workspace during this scan. Reviewing these files provides runtime evidence to complement the static analysis above.
Each card represents one category and shows the top 3 findings. All items in the Findings section.
Each card represents one category and shows the top 3 findings. All items in the Findings section.
Overall maturity assessment across the six categories of the RAISE framework. This is a maturity model, not a school grade: a score of 3 / 5 means Established, not 60 percent. Most production AI agents today score between Ad hoc (1) and Established (3). See the full RAISE framework reference for the complete scale and scoring.
Maturity Scoring Rubric
Every score above is based on this scale. A score is a snapshot of observable posture — not a verdict on the people or team behind the system.
| Score | Label | Meaning |
|---|---|---|
| 5 | Exemplary | Best-in-class; automated, continuously tested, reference quality. Rarely achieved in shipping systems. |
| 4 | Strong | Comprehensive controls, active management, minor gaps. Production-ready. |
| 3 | Established | Documented controls consistently applied; known gaps accepted. A respectable baseline. |
| 2 | Partial | Some controls exist but coverage is incomplete; key gaps remain. |
| 1 | Ad hoc | Informal or inconsistent measures; relies on individual judgment. |
| 0 | Absent | No evidence this category is addressed at all. |