You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reported by Jocelyn during the July 30 action-mediation bug bash and independently reproduced afterward.
Changing a policy rule from mode: mock to mode: block correctly blocks the tool, but the action evidence keeps the rule's original mock-oriented note in the reason field. The enforcement result is safe, while the evidence explanation contradicts it.
send_message: mode=block real_executed=false matched=send_message
returned={"message": "Tool send_message was blocked by sandbox mediation policy.", "status": "blocked"}
But the same event in inference_set.jsonl contains:
{
"mode": "block",
"real_executed": false,
"matched": "send_message",
"returned": {
"message": "Tool send_message was blocked by sandbox mediation policy.",
"status": "blocked"
},
"reason": "...Mocking is the ONLY safe option, not a convenience..."
}
No real action executes and nothing escapes the sandbox. The defect is the misleading evidence explanation.
Expected behavior
A blocked action's decision reason should describe the block. If the user-authored policy note is still useful provenance, preserve it separately rather than presenting a stale mock-oriented note as the reason for the current decision.
Open the printed inference_set.jsonl artifact and inspect the send_message event's reason.
Technical diagnosis
ActionMediator.mediate() reads the policy rule's static note and uses it directly as MediationDecision.reason for pass, mock, and block decisions. A valid mode edit can therefore leave the evidence with a note describing the previous handling mode.
The bug-bash guide can tell a tester to update the note along with the mode, but that only avoids this fixture's contradiction. The evidence contract still conflates a user-authored policy note with the reason for the actual mediation decision.
Suggested acceptance criteria
A block event does not describe the action as mocked.
The evidence clearly distinguishes the actual decision reason from optional user-authored policy context.
Existing pass/mock/block evidence remains backward-compatible or includes a documented migration.
A regression test changes a rule's mode without changing its note and verifies that the emitted decision explanation remains accurate.
Environment
Originally observed with assert_ai 0.1.0 editable from jake/action-mediation-bugbash, Python 3.14.4, and Ubuntu 26.04 under WSL2/aarch64. Independently reproduced on the current bug-bash branch with the bundled synthetic telecom data.
Summary
Reported by Jocelyn during the July 30 action-mediation bug bash and independently reproduced afterward.
Changing a policy rule from
mode: mocktomode: blockcorrectly blocks the tool, but the action evidence keeps the rule's original mock-orientednotein thereasonfield. The enforcement result is safe, while the evidence explanation contradicts it.Related feature PR: #279.
Actual behavior
The policy change is only:
The resulting action is correctly blocked:
But the same event in
inference_set.jsonlcontains:{ "mode": "block", "real_executed": false, "matched": "send_message", "returned": { "message": "Tool send_message was blocked by sandbox mediation policy.", "status": "blocked" }, "reason": "...Mocking is the ONLY safe option, not a convenience..." }No real action executes and nothing escapes the sandbox. The defect is the misleading evidence explanation.
Expected behavior
A blocked action's decision reason should describe the block. If the user-authored policy note is still useful provenance, preserve it separately rather than presenting a stale mock-oriented note as the reason for the current decision.
Reproduction
Check out
jake/action-mediation-bugbashatd2d359aor the corresponding Add stock sandboxed action mediation to ASSERT #279 implementation.Install the checkout and build the bundled stock image:
In
examples/sandbox_action_mediation/policy.yaml, change only thesend_messagerule's mode frommocktoblock; leave its note unchanged.Run:
Open the printed
inference_set.jsonlartifact and inspect thesend_messageevent'sreason.Technical diagnosis
ActionMediator.mediate()reads the policy rule's staticnoteand uses it directly asMediationDecision.reasonfor pass, mock, and block decisions. A valid mode edit can therefore leave the evidence with a note describing the previous handling mode.The bug-bash guide can tell a tester to update the note along with the mode, but that only avoids this fixture's contradiction. The evidence contract still conflates a user-authored policy note with the reason for the actual mediation decision.
Suggested acceptance criteria
blockevent does not describe the action as mocked.Environment
Originally observed with
assert_ai 0.1.0editable fromjake/action-mediation-bugbash, Python 3.14.4, and Ubuntu 26.04 under WSL2/aarch64. Independently reproduced on the current bug-bash branch with the bundled synthetic telecom data.