Skip to content

fix(server): sanitize legacy adapter failures - #1127

Merged
bokelley merged 1 commit into
mainfrom
missoula-v12
Sep 5, 2026
Merged

fix(server): sanitize legacy adapter failures#1127
bokelley merged 1 commit into
mainfrom
missoula-v12

Conversation

@bokelley

@bokelley bokelley commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Summary

  • centralize legacy adapter exception-to-wire policy for MCP and A2A
  • replace unexpected request/response adapter exception text with fixed public messages while retaining traceback logs
  • add an explicit buyer-safe validation exception for actionable request errors
  • cover request and response failures through real MCP and A2A JSON-RPC ASGI routes

Validation

  • 7,611-test full suite passed
  • repository pre-commit hooks passed (Black, Ruff, mypy, adopter type checks, Bandit, safety checks)
  • three independent expert reviews completed; no open findings

Closes #1126


Open workspace in Conductor

@bokelley
bokelley enabled auto-merge (squash) September 5, 2026 08:56

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Approve

Approve — clean, well-scoped error-disclosure fix for the legacy adapter.

Checked:

  • No Critical/High/Medium findings reported by the reviewer.
  • Legacy-adapter exception text is now routed through legacy_adapter_task_error, which fail-closes: only an explicit opt-in LegacyAdapterValidationError on the request phase surfaces its author-written message; all other failures return fixed public text with the traceback logged operator-side only. This is a security-hardening improvement (prevents internal exception detail leaking onto the wire).
  • Dual-transport (MCP + A2A) and dual-phase test coverage confirms the sentinel never reaches the wire; two new test files back the new branches.

Gate checks:

  • gated_paths is false, so row 2 does not apply despite review_decision: REVIEW_REQUIRED.
  • high_risk is true, but reasons are (added)/(modified) with no medium-or-higher findings, so rows 3–5 do not fire. New-file additions and clean modifications on high-risk paths are presumed safe absent findings.
  • No no-auto-approve team match (row 7 n/a). Fewer than three medium findings (row 8 n/a).

Falls through to row 9 → approve.

@bokelley
bokelley merged commit 46a424e into main Sep 5, 2026
28 checks passed
@bokelley
bokelley deleted the missoula-v12 branch September 5, 2026 09:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

security: do not expose legacy adapter exception text in protocol errors

1 participant