Make qa-explore default to dangerous mode for automation
Problem
Default qa-explore to dangerous mode, keep a safe opt-in, add tests, and update docs so worker QA does not stall on Playwright permissions.
Context
scripts/dispatchalready defaults worker automation to dangerous mode and offers--safeas the explicit opt-in for permission prompts.scripts/qa-explorestill defaulted to safe mode, which caused innerclaude -pbrowser runs to stop and ask for MCP Playwright tool permissions instead of completing automatically.- The follow-up goal is to align
qa-explorewith the existing dispatch automation model, keep a documented safe escape hatch, and cover the behavior intests/scripts/test_dispatch_scripts.py.
Possible Solutions
- Flip
scripts/qa-exploreto dangerous-by-default, add an explicit--safeflag, and update docs/tests accordingly. Recommended because it matchesdispatch, removes prompt brittleness in worker automation, and keeps the interactive path available when deliberately requested. - Leave the default alone and rely on prompts to tell workers to pass
--dangerous. Rejected because it is brittle and makes the wrapper itself unreliable for automation.
Plan
- Change
scripts/qa-exploreso its default permission mode is dangerous and--safebecomes the explicit override. - Update the dry-run and execution tests in
tests/scripts/test_dispatch_scripts.pyto lock the new behavior in. - Update the repo QA guidance to document the new default and the meaning of
--safe. - Validate with focused script tests and record the result here.
Implementation Progress
- Updated
scripts/qa-exploreusage/help text and argument parsing to default to dangerous mode, mirroringscripts/dispatch. - Replaced the old
--dangerousopt-in with--safeas the only permission-mode override. - Updated
tests/scripts/test_dispatch_scripts.pyso dry-run now assertsPermission mode: dangerousby default, asserts--saferemoves the dangerous flag, and asserts real execution includes--dangerously-skip-permissions. - Updated
.codex/skills/qa-explorer/SKILL.mdandAGENTS.mdto document the automation-first default and the--safeopt-in. - Focused validation:
uv run pytest tests/scripts/test_dispatch_scripts.py -q->15 passed.
QA Exploration
- N/A. This task changes the local QA wrapper and docs, not a user-facing browser surface. Focused script regression tests cover the behavior change.
- [x] QA exploration completed (or N/A for non-UI tasks)
Review Feedback
- [x] Review cleared