Skip to content

Exempt ordinary controls from recipient guard on public composers - #3306

Merged
esokullu merged 3 commits into
webbrain-one:mainfrom
esokullu:main
Nov 2, 2026
Merged

esokullu merged 3 commits into
webbrain-one:mainfrom
esokullu:main

Conversation

@esokullu

@esokullu esokullu commented Nov 2, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

esokullu and others added 3 commits November 2, 2026 20:38
- The previous commit returned no recipient policy for X's /compose/post.
  That waived the guard for every tool on the route, scripts and drags
  included, and for a send the call had already bound to a recipient.
  The route now keeps its policy, marked publicComposer.
- One helper, _recipientGuardChecksControls, decides whether the guard
  checks an ordinary control: a click, click_ax, Enter, a set_field
  submit or an upload. On a public composer it doesn't, unless the call
  has already bound a send to a recipient. The guard, the upload context,
  the publication prefetch and the caption pre-read all use it, so the
  separate upload-only exemption is gone.
- execute_js, iframe_click, drag_at and execute_webmcp_tool are refused
  on the route again with recipient_unverifiable_dispatch_path.
- The X adapter's publicComposer now covers /compose/post,
  /compose/tweet, /compose/article(s) and their subpaths, including the
  drafts under /compose/post/unsent/. /compose/postx does not match.
- The mustNotBlock test stubs the guard's probe with a send that has no
  recipient and checks reason codes and probe counts. On six public
  routes the ordinary controls pass without a probe, the four unbindable
  tools are refused, and a bound send is probed and refused for lack of
  a recipient. On the DM routes and the look-alike, every ordinary
  control is probed and refused.
- The publication prefetch tests stay on /compose/post, where one caption
  kind is read now. Direct reader calls on an X DM route cover the
  message_control read, including a new test that it joins the
  prefetch's read instead of asking twice.
- Chrome and Firefox are mirrored.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…flow replay

- Update savedWorkflowProtectedMessagingStepIndex and replaySavedWorkflow
  to exempt ordinary public-composer controls (clicks, Enter, submit, uploads)
  while retaining recipient authorization requirements for unbindable
  dispatch tools (execute_js, iframe_click, execute_webmcp_tool, drag_at)
  and direct message routes.
- Add test coverage across Chrome and Firefox runners.
…-guard

fix(guards): exempt only ordinary controls on X's public composers
@vercel

vercel Bot commented Nov 2, 2026

Copy link
Copy Markdown

@esokullu is attempting to deploy a commit to the esokullu's projects Team on Vercel.

A member of the Team first needs to authorize it.

@esokullu
esokullu merged commit e692a85 into webbrain-one:main Nov 2, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant