CodeTracked since May 21, 2026
OpenHands blocks conversation path traversal in storage path construction
The PR adds a central allowlist validator inside `openhands.storage.locations.get_conversation_dir()` for `sid` and `user_id`, decoding URL-encoded input and only allowing `[A-Za-z0-9_-]` components before building conversation filesystem paths. This prevents path traversal payloads such as `../`, `/`, `\`, `%2e%2e%2f`, and NUL bytes from producing out-of-root paths while preserving valid UUID-like identifiers.
get_conversation_dirsiduser_idopenhands.storage.locations