Security
- Confine caller-supplied write destinations to the browse-mcp data roots (CWE-22, reported privately by novice-22).
browser_download'ssave_diris now resolved under~/.browse-mcp/downloadsandbrowser_save_state/browser_load_state's explicitpathunder~/.browse-mcp/state; absolute paths and..escapes are rejected, and download filenames are reduced to a bare basename. Previously a caller (a malicious MCP client, or an agent steered by indirect prompt injection) could pass an arbitrarysave_dirand a URL whose body became the file contents, writing attacker-controlled bytes to any path (e.g.~/.bashrc). Relocate the roots withBROWSE_MCP_HOME. Theforce_fetchfallback now also honoursBROWSE_MCP_ALLOWED_ORIGINS/BROWSE_MCP_BLOCKED_ORIGINS, which its rawfetch()previously bypassed.
Full changelog: https://github.com/That1Drifter/browse-mcp/blob/v0.8.2/CHANGELOG.md