@@ -376,11 +376,13 @@ function findGuardianReviewStatus(events: CapturedAgentEvent[]): "approved" | "d
376376function assertGuardianReviewCompleted ( params : {
377377 events : CapturedAgentEvent [ ] ;
378378 label : string ;
379+ requireEvents ?: boolean ;
379380} ) : CapturedAgentEvent | undefined {
380381 const completedEvents = params . events . filter (
381382 ( event ) => event . data ?. phase === "completed" && event . data ?. status ,
382383 ) ;
383- if ( completedEvents . length === 0 && ! CODEX_HARNESS_REQUIRE_GUARDIAN_EVENTS ) {
384+ const requireEvents = params . requireEvents ?? CODEX_HARNESS_REQUIRE_GUARDIAN_EVENTS ;
385+ if ( completedEvents . length === 0 && ! requireEvents ) {
384386 return undefined ;
385387 }
386388 expect (
@@ -441,13 +443,20 @@ async function verifyCodexGuardianProbe(params: {
441443 const review = assertGuardianReviewCompleted ( {
442444 events : deniedResult . events ,
443445 label : "ask-back probe" ,
446+ requireEvents : false ,
444447 } ) ;
445448 // The approve/deny call is Codex policy-owned and may change independently.
446- // OpenClaw's contract here is that Guardian mode reaches Codex app-server and
447- // projects the structured review lifecycle back onto the agent event bus.
449+ // OpenClaw's strict projection contract is covered by the allow probe above.
450+ // Riskier prompts may be refused or ask back before Codex creates a review
451+ // event, depending on current policy/model behavior.
448452 if ( review ?. data ?. status === "denied" ) {
449453 expect ( deniedResult . text ) . toContain ( askBackToken ) ;
450454 expect ( deniedResult . text . toLowerCase ( ) ) . toMatch ( / a p p r o v | p e r m i s s i o n | g u a r d i a n | r e j e c t | d e n i e d / ) ;
455+ } else if ( ! review ) {
456+ expect ( deniedResult . text ) . toContain ( askBackToken ) ;
457+ expect ( deniedResult . text . toLowerCase ( ) ) . toMatch (
458+ / a p p r o v | p e r m i s s i o n | g u a r d i a n | r e j e c t | d e n i e d | b l o c k | c a n n o t | c a n ' t / ,
459+ ) ;
451460 }
452461 expect ( deniedResult . text . trim ( ) . length ) . toBeGreaterThan ( 0 ) ;
453462}
0 commit comments