Skip to content

Deny framing for Workshop UI#28

Open
haasonsaas wants to merge 1 commit into
raindrop-ai:mainfrom
haasonsaas:codex/deny-workshop-framing
Open

Deny framing for Workshop UI#28
haasonsaas wants to merge 1 commit into
raindrop-ai:mainfrom
haasonsaas:codex/deny-workshop-framing

Conversation

@haasonsaas
Copy link
Copy Markdown
Contributor

Summary

  • add daemon-wide frame protections:
    • Content-Security-Policy: frame-ancestors 'none'
    • X-Frame-Options: DENY
  • add a regression test covering the security headers

Security

Workshop is a local control plane. The UI can trigger daemon endpoints that launch local Codex/Claude/replay actions. Without frame protections, a hostile web page can embed http://localhost:<port> and clickjack visible UI controls, turning user clicks inside the frame into same-origin daemon requests.

Blocking framing removes that browser bridge while preserving normal local use. This is defense for the daemon/UI boundary rather than a claim of unauthenticated raw POST RCE.

Duplicate check

I did not find an existing issue or PR for clickjacking, frame-ancestors, or X-Frame-Options in raindrop-ai/workshop.

Tests

  • bun test tests/security-headers.test.ts
  • bun test tests/
  • bun x tsc --noEmit
  • bun run lint (passes; existing React hook warnings remain)
  • bun run build

@haasonsaas haasonsaas marked this pull request as ready for review May 29, 2026 23:46
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