Skip to content

training-agent: mount /<tenant>/mcp-strict-required + /<tenant>/mcp-strict-forbidden, route signed_requests storyboard at all three #4096

@bokelley

Description

@bokelley

Summary

Storyboard signed_requests shows 9 skipped vectors on every tenant. 4 are explicit `skipVectors` in `run-storyboards.ts` (007/018/020/025); the remaining 5 skip because they require covers_content_digest: 'required' or 'forbidden' capability profiles. Our current //mcp-strict route advertises 'either', so the runner grades those vectors capability-incompatible.

Scope

The auth primitives already exist in server/src/training-agent/request-signing.ts:

  • buildStrictRequiredRequestSigningAuthenticator → 'required' digest mode
  • buildStrictForbiddenRequestSigningAuthenticator → 'forbidden' digest mode
  • getStrictRequiredRequestSigningCapability / getStrictForbiddenRequestSigningCapability

Three pieces of work:

  1. Mount routes in server/src/training-agent/index.ts, mirroring the per-tenant /<tenant>/mcp-strict pattern (PR fix(training-agent): restore per-tenant /<tenant>/mcp-strict, close #3965 Class C #4061):

    • /<tenant>/mcp-strict-required → strict-required authenticator + ctx.digestMode = 'required'
    • /<tenant>/mcp-strict-forbidden → strict-forbidden authenticator + ctx.digestMode = 'forbidden'
  2. Route the storyboard sequentially — currently run-storyboards.ts redirects signed_requests to /mcp-strict only. Run it three times, once per route, with the matching request_signing.profile option.

  3. Re-grade — vector 007 (missing-content-digest required) fires on /mcp-strict-required; vector 018 (digest-covered-when-forbidden) fires on /mcp-strict-forbidden; etc.

References

Coverage lift

Tenant Today After fix Δ
signed_requests 31P / 9S 36P / 4S +5 / -5

Across all six tenants: +30 steps recovered.

Metadata

Metadata

Assignees

No one assigned

    Labels

    claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.compliance-suite

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions