Mechanism◆Article
The app_debug() tool renders an app in an invisible, non-interactive iframe and runs agent-provided JavaScript inside that sandboxed iframe, letting the agent smoke test the app and even measure the dimensions of its elements.
Explains how app_debug() works: it displays the app in an opacity:0 iframe with pointer-events:none and executes agent-supplied JavaScript in that sandbox, enabling smoke testing and element-dimension measurement. ✦ AI generated
release author · Simon Willison's Weblog · 2026-08-01 · original ↗
The app_debug() tool is pretty neat: it works by displaying the app in a opacity: 0 iframe with pointer-events: none (so it can't be seen or interacted with) and then executing agent-provided JavaScript inside that sandboxed iframe. This means the agent can smoke test that the app is working and even do things like measure the dimensions of different elements.
Read full article ↗excerpt · fair-use quotation
- ·Renders app in an opacity:0 iframe
- ·Sets pointer-events:none — invisible and non-interactive
- ·Executes agent-provided JavaScript inside the sandboxed iframe
- ·Agent cannot see or interact with the app directly
- ·Smoke tests that the app is working
- ·Measures the dimensions of different elements
- ·Runs arbitrary JavaScript within the sandbox scope
Around this claim
Mechanism · 2
Replit attacks the assumption that autonomous code genuinely works by building a self-testing reflection loop that drives a real browser to catch the 'Potemkin interface' — code that looks complete but fails when actually used.Article author · ByteByteGo Newsletter · conf 85%app_debug() is built on the new context.browser_task() mechanism added in datasette-agent 0.4a0.release author · Simon Willison's Weblog · conf 85%