$ the-wire · showcase
OpenHands patches XSS in static server, adds Azure DevOps SSH remote support
By RepoJournal · Filed · About Agentic Coding · Composed from the cited sources · methodology
OpenHands shipped a fix that HTML-escapes injected runtime config and stops caching credential-bearing responses, closing an XSS path in its static server.
The static server injected runtime config values without HTML escaping, so config containing HTML characters could break out of the script tag. The fix routes values through `serializeForInlineScript` in `scripts/static-server.mjs` and sets `Cache-Control: no-store` on credential injection, which also prevents browsers from caching sensitive credentials like session API keys [1][2].
Azure DevOps SSH remotes now parse correctly. The control bar used to show the repo as `v3/myorg/myproject/myrepo` with no branch link; it now shows the correct name and exposes the Pull, Push, and Pull Request actions, according to the author's local test [3][5].
A new analytics call tracks authenticated Canvas arrivals and fires only after cookie authentication succeeds, isolated from startup [4].
Action items
- → Verify your OpenHands static server runs a build that includes the HTML-escape and no-store fix OpenHands/OpenHands [plan]
- → Confirm Azure DevOps SSH workspaces show the correct remote name and Pull/Push actions after updating OpenHands/OpenHands [monitor]
References
- [1] fix(static-server): HTML-escape injected runtime config and set Cache-Control: no-store on credential injection (#17175) ↗ OpenHands/OpenHands
- [2] fix(static-server): HTML-escape injected runtime config and set Cache-Control: no-store on credential injection ↗ OpenHands/OpenHands
- [3] fix: recognize Azure DevOps SSH remotes ↗ OpenHands/OpenHands
- [4] feat: track authenticated Canvas arrivals ↗ OpenHands/OpenHands
- [5] fix: recognize Azure DevOps SSH remotes (#17375) ↗ OpenHands/OpenHands