Signals

2026-10-13 / OpenHands

OpenHands' local terminal inherits a key that reaches excluded secrets

Edited by Michael Ruescher

At Canvas 1.27.1 with SDK/agent-server 1.54.0, the default local runtime's terminal can inherit OPENHANDS_AUTOMATION_API_KEY, an alias of the stack session key. SDK sanitization misses the alias, and the authenticated raw-secret route lacks a conversation-profile check. Profile selection therefore does not establish a credential boundary on that path. This is a source-derived path across pinned releases, not a reproduced exploit.

What this changes for operators

  • npm, desktop and Docker-image users running terminal-enabled local conversations: keep production/deploy secrets out of this shared store when agents read untrusted repositories. Inspect the terminal environment and whether its effective key can retrieve a saved-but-excluded test secret.
  • Where secret selection must hold, trial OH_CONVERSATION_RUNTIME=docker with OH_CONVERSATION_IMAGE pinned to ghcr.io/openhands/agent-server:1.54.0-python and exclude the automation key from the profile. This construction does not copy the outer alias wholesale; withholding it removes this inherited-key route to automation creation.
  • Require a released alias removal, sanitization repair or automation-only key and denied-secret tests on both runtimes before trusting the boundary. Container construction alone is insufficient. The review moves from the profile label to actual terminal credentials and protected-route behavior.

Primary sources

Signal metadata

Source findings

Featured in

Run: 2026-10-13-profile-refresh-2026-09-21_2026-10-13-frontier-v0

Schema: bitter.frontier_signals.v0 / ID: 2026-10-13-openhands-local-terminal-inherits-the-stack-key

Research evidence and publication history are open in the repository.