Security
A model writes every page on your canvas, so Wirely treats that HTML as untrusted. This page explains how. The source has the code behind each point.
Pages run in a sandbox
- Each page renders in an iframe with
sandbox="allow-scripts"and withoutallow-same-origin. A page cannot read your Wirely session or call Wirely as you. - Before a page renders, Wirely removes disallowed tags and adds a strict Content Security Policy. Scripts load only from a short list of CDNs, and images only from a short list of hosts.
- Wirely never runs your codebase. It does load page HTML in a headless Chrome on its servers to take screenshots for
get_page_png. That render sanitizes the page first and keeps the same Content Security Policy, so scripts still load only from the allowed CDNs.
Your keys
- Provider keys you save in settings are encrypted with AES-256-GCM, bound to your account. Wirely decrypts a key only to make a request you asked for.
- Agent tokens and OAuth codes are stored as SHA-256 hashes.
- Wirely's logs strip keys, tokens, prompts, and page HTML.
Agent access
Your agent signs in through your browser, and you approve it on an Authorize page. It can reach only your projects. Revoke a client at any time in Settings, MCP.
The build check
The build check is the one time Wirely hands your agent a script to run. Your agent downloads it from /api/capture/script and runs it on your machine.
- It opens your app in a headless copy of your own Chrome with a fresh profile. It carries no cookies unless you pass one with
--cookie. - It uploads the page to a link that only writes to that one project and expires after an hour.
Report a problem
Found a security issue? Open an issue on GitHub without the details, and ask for a private way to send them.