docker_extra_args config not bridged to terminal env
Cluster 28863 · environments. Data as of
3 open items. Fix merged in #50631. Check it covers your case.
The short answer
- Known?
- Yes. 17 related items grouped here, 5 issues already closed.
- Fix event
- A fix was merged to main in PR #50631. Check it covers your case. No release data is tracked.
- Tracker
- The maintainers' tracker marks this
unresolved. That is separate from the fix event. - Still open
- 1 issue and 2 PRs.
Next step: read #50631, then check whether your report is one of the 1 still open.
Read #50631Pick up a Lab taskA bug where terminal.docker_extra_args set in config.yaml is silently dropped because it is missing from the config-to-environment-variable bridge maps, particularly in gateway mode. Members include bug reports, multiple fix attempts, and a feature request to unify the bridging logic.
Open issues1
- Issue#28892FR: single-source terminal config→env bridge (eliminate 3-dict drift)
Open PRs2
Fixes on record
-
#50631 fix(terminal): bridge docker_extra_args to TERMINAL_DOCKER_EXTRA_ARGS in CLI + gateway
files:
cli.py,gateway/run.py,tests/tools/test_terminal_config_env_sync.pyShow the diff
-
cli.py@@ -621,6 +621,7 @@ def load_cli_config() -> Dict[str, Any]: "container_persistent": "TERMINAL_CONTAINER_PERSISTENT", "docker_volumes": "TERMINAL_DOCKER_VOLUMES", "docker_env": "TERMINAL_DOCKER_ENV", + "docker_extra_args": "TERMINAL_DOCKER_EXTRA_ARGS", "docker_mount_cwd_to_workspace": "TERMINAL_DOCKER_MOUNT_CWD_TO_WORKSPACE", "docker_run_as_host_user": "TERMINAL_DOCKER_RUN_AS_HOST_USER", "docker_persist_across_processes": "TERMINAL_DOCKER_PERSIST_ACROSS_PROCESSES", -
gateway/run.py@@ -1464,6 +1464,7 @@ def _profile_runtime_scope(profile_home: "Path"): "container_persistent": "TERMINAL_CONTAINER_PERSISTENT", "docker_volumes": "TERMINAL_DOCKER_VOLUMES", "docker_env": "TERMINAL_DOCKER_ENV", + "docker_extra_args": "TERMINAL_DOCKER_EXTRA_ARGS", "docker_mount_cwd_to_workspace": "TERMINAL_DOCKER_MOUNT_CWD_TO_WORKSPACE", "docker_run_as_host_user": "TERMINAL_DOCKER_RUN_AS_HOST_USER", "docker_persist_across_processes": "TERMINAL_DOCKER_PERSIST_ACROSS_PROCESSES", -
tests/tools/test_terminal_config_env_sync.py@@ -233,6 +233,27 @@ def test_docker_env_is_bridged_everywhere(): assert "TERMINAL_DOCKER_ENV" in _terminal_tool_env_var_names() +def test_docker_extra_args_is_bridged_everywhere(): + """Regression pin for docker_extra_args config key being silently ignored. + + ``terminal.docker_extra_args`` in config.yaml passes extra flags verbatim + to ``docker run`` (e.g. ``--gpus=all``, ``--shm-size=16g``). The key was + present in DEFAULT_CONFIG, TERMINAL_CONFIG_ENV_MAP (so ``hermes config + set`` bridged it), terminal_tool._get_env_config (reads + TERMINAL_DOCKER_EXTRA_ARGS), and DockerEnvironment (applies extra_args) -- + but it was MISSING from cli.py's env_mappings and gateway/run.py's + _terminal_env_map. So a user who hand-edited config.yaml had their GPU / + shm-size flags silently dropped on the CLI and gateway/desktop paths, + while ``image``/``volumes`` (which were in those maps) bridged fine -- + producing the "Hermes partially reads the Docker config" symptom. Guard + all four bridging points so this cannot regress. + """ + assert "docker_extra_args" in _cli_env_map_keys() + assert "docker_extra_args" in _gateway_env_map_keys() + assert "docker_extra_args" in _save_config_env_sync_keys() + assert "TERMINAL_DOCKER_EXTRA_ARGS" in _terminal_tool_env_var_names() + + def test_docker_persist_across_processes_is_bridged_everywhere(): """Regression pin for the cross-process container reuse toggle.
-
8 PRs closed without merging
From the close comments: superseded by another PR 4 · done elsewhere 2 · other 2
-
#28888 fix(terminal): add docker_extra_args to all three config-to-env bridge maps (#28863) · superseded by another PR →
#28891 -
#28891 fix(gateway): bridge terminal.docker_extra_args and docker_forward_env to env · other →
#35937 -
#29236 fix(terminal): pass docker_extra_args through _terminal_env_map (#28863) · superseded by another PR →
#28891,#28888 -
#30629 fix(gateway): bridge terminal.docker_extra_args to env for gateway sessions (#30415) · superseded by another PR →
#28891,#28888 -
#30887 fix(gateway): bridge terminal.docker_extra_args to env for gateway sessions (#30415) · superseded by another PR →
#30629,#28891
Show 3 more
-
#39683 fix(terminal): bridge docker_extra_args from config.yaml (#39615) · other →
#35937 -
#45288 fix(gateway): bridge docker_extra_args config to TERMINAL_DOCKER_EXTRA_ARGS env var · done elsewhere →
de6b3ae,#50631 -
#63945 fix(config): bridge terminal.docker_extra_args into runtime env · done elsewhere →
#50631
Closed issues · 5
- Closed#28863terminal.docker_extra_args from config.yaml silently dropped — missing in _terminal_env_map bridge
- Closed#30415[Bug]: terminal.docker_extra_args silently ignored in gateway mode (missing env-var bridge)
- Closed#35751terminal.docker_extra_args in config.yaml not being applied to Docker sandbox
- Closed#39615[Bug]: The docker-extra_args configuration is invalid in config. yml and cannot be read.
- Closed#45129Title:`docker_extra_args` ignored by gateway — missing from `_terminal_env_map` in `gateway/run.py`
How this cluster was grouped
-
Link evidence (
partly structural links): some members are connected by structural evidence (shared changed files, or a closing/superseded reference); the rest are joined by an automated relevance judgement over their text. - Members outside that structural core may belong to a different underlying problem.
-
Pairwise link density
0.12: the share of item pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36.1.00means every pair is linked.
Pick up a Lab task
Check whether a fix covers the open issues here, with your own agent. Bring back evidence for maintainers.
Open the LabAt a glance
- Subsystem
- environments
- Merged PRs
- #50631
- Closed issues
- 5
- Attempts
- 8 PRs closed without merging
- Fix link checked
- 22 Jun 2026