Conversation
- Reject data:text/html for canvas present - Cancel a WebView navigation whose target fails the existing URL check Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
|
Codex review: needs real behavior proof before merge. Reviewed September 24, 2026, 3:27 PM ET / 19:27 UTC (Revision 3). ClawSweeper reviewWhat this changesThe branch moves canvas URL checks into a tested policy, rejects HTML data URLs, checks later WebView navigations, and cancels page-created windows. Merge readiness⛔ Blocked before merge - 6 items remain This PR remains useful: current main still lacks a check for later canvas navigations, and the new head addresses the previously reported popup gap. Maintainer approval of the compatibility change and current-head WebView proof remain necessary before merge. Priority: P1 Review scores
Verification
How this fits togetherThe Windows tray canvas displays agent-supplied URLs or HTML in WebView2. Canvas navigation checks decide which destinations that content may open. flowchart LR
A[Agent canvas request] --> B[Canvas window]
B --> C[URL policy]
C --> D[WebView navigation]
D --> E[Later navigation check]
D --> F[Popup cancellation]
E --> G[Allowed page or cancelled request]
Decision needed
Why: The pinned base allowed HTML data URLs, while this security patch removes them; the maintainer discussion requests an explicit compatibility decision. Before merge
Findings
Agent review detailsSecurityNeeds attention: The source adds destination guards, but their final WebView effect remains unverified at the current head. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Keep the later-navigation guard, settle the supported HTML data URL contract, and demonstrate allowed and blocked destinations in an isolated current-head canvas window. Do we have a high-confidence way to reproduce the issue? Yes, from source: current main checks the initial canvas URL but does not register a later-navigation handler. A live redirect has not been exercised in the supplied proof. Is this the best way to solve the issue? Unclear until the HTML compatibility choice is made. Rechecking WebView navigation is a focused repair, and popup cancellation addresses the prior finding, but tests alone do not establish the final network boundary. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 273b0182745a. LabelsLabel changes:
Label justifications:
EvidenceSecurity concerns:
What I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (2 earlier review cycles)
|
Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
|
Maintainer disposition at head |
|
Global triage: NEEDS_HUMAN_TEST. Take confidence 60%; recommendation confidence 85%; effort small-to-medium; risk medium. Reviewed exact head Owner: author/maintainer. Make the helper non-throwing or private, cover or explicitly scope out popups, document the |
Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
|
ef6be20 makes Local filter CanvasNavigationPolicy: 10 passed. Live captures of an allowed navigation, a blocked private redirect, and a blocked popup were not run. |
What Problem This Solves
Fixes: canvas content can open a private or loopback address after the first URL check, including from data HTML.
User Impact
User impact: data HTML is no longer presented, and a later navigation is cancelled unless it passes the same URL check as the first navigation.
Why This Change Was Made
The first Navigate check allowed data:text/html and did not run again when the page navigated or redirected.
Evidence
Before data HTML was rejected:
After the check:
data:text/plain stays allowed. http://127.0.0.1/ and http://192.168.1.5/ are rejected. https://example.com/ stays allowed.
Change Type
Scope
winnodeRequired proof pools
windows-winui-interactive: canvas navigation policy changed.Validation
./build.ps1: succeededFocused command:
dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --filter FullyQualifiedName~CanvasNavigationPolicyTestsReal Behavior Proof
fix/f071-canvas-navigation-guardat9bf410b01bd981993bef6386e43a9c6b5ee056c59bf410b01bd981993bef6386e43a9c6b5ee056c5Real behavior proof
Security Impact
Compatibility and Migration
Review Conversations