Create an operator-defined shadow exception (EDGE-143.6)
Changed onPersists an operator-signed exception declaration that suppresses future ShadowAgent findings matching its scope predicate (source_type + source_id + risk_level + signal_set). Matching is applied at finding emit time: matching findings are stamped with exception_id, false_positive_reason="operator_exception", and status=managed_skip; they are excluded from default-filter list queries.
Q8 step-up auth: when scope_risk_level is "high", the caller MUST hold the admin legacy role OR the shadow.exception.high_risk permission. Failure returns 403 with code step_up_required and details.required = "mfa_recent|signed_admin_token". The persisted Exception records which factor satisfied the gate so SIEM rules can pivot on the auth tier at the time of action.
expires_at MUST be in the future and within 90 days (§10.3 "longer requires re-affirmation").
Request
- Base URL: http://localhost:8081
- URL: http://localhost:8081/api/v1/edge/shadow/exception
- Auth: one of:
- API key in header X-API-Key
- HTTP bearer
Headers
Tenant isolation header (required on all protected routes).
Request body
Response
Exception accepted and persisted.
Changes
- info
endpoint added
- info