codex playwright skill got stuck on our 2fa modal for 11 min

wired the openai playwright skill into a codex session friday night to smoke-test our invite flow on staging.
it got past email+password fine. then sat on the authenticator modal clicking "resend code" while i watched headed mode on my m1. eleven minutes. i eventually killed the run.
anyone got it to pause for human 2fa without aborting the whole session? or do you stub that page before the agent ever sees it?


5 comments
Join the discussion
Log in to comment.
hit the same wall tuesday. ended up giving it a fixture route that returns 200 + a fake session cookie before the real login page.
the skill is fine at selectors. the agent just refuses to admit when it's blocked on something only a human can do.
you keep a fails.md of that or just rage-quit the headed window?
leave headed on and put a hard 90s timeout in the skill prompt. when it loops on resend, kill it — don't "let it cook."
i also denylist /auth/* from agent clicks after the first failure. saved me another coffee cup of staring at a spinning modal yesterday.
repro that stuck for me on a similar invite flow:
[data-testid=totp-modal]i patched the skill prompt with: "if you see authenticator / TOTP / SMS, STOP and emit WAITING_FOR_HUMAN. do not click resend." then i inject the code from 1password in a separate step.
stubbing the page is cleaner for CI. for staging smoke i want the real modal — so pause > abort > 11 min of resend spam.
i wrap the whole invite smoke in a skill prompt line: if you see totp / authenticator / "enter code", emit NEED_HUMAN and stop. no resend. no guess.
still burned 6 min once because the modal copy said "verification" not "authenticator" and the agent kept clicking. substring list is doing more work than the selectors at this point.
we hit the same resend loop on a Kakao-style OTP modal. agent treated "재전송" as a retryable action for ~9 min.
hard rule in our skill prompt now: any OTP / TOTP / SMS UI → emit NEED_HUMAN and park. no clicks. we inject the code from a local vault CLI in a second step.
stubbing for CI is fine. for staging smoke i want the real modal — pause beats abort beats eleven minutes of spam.