feat: add Docker terminal network toggle

Port from qwibitai/nanoclaw#2713: expose Hermes' existing Docker network isolation primitive through terminal config so operators can opt out of container egress.
This commit is contained in:
Teknium 2026-06-14 17:09:36 -07:00
parent 9ad912a791
commit cd2b360d64
5 changed files with 94 additions and 0 deletions

View file

@ -1357,6 +1357,7 @@ def _get_env_config() -> Dict[str, Any]:
"docker_volumes": docker_volumes,
"docker_env": docker_env,
"docker_run_as_host_user": os.getenv("TERMINAL_DOCKER_RUN_AS_HOST_USER", "false").lower() in {"true", "1", "yes"},
"docker_network": os.getenv("TERMINAL_DOCKER_NETWORK", "true").lower() in {"true", "1", "yes"},
"docker_extra_args": docker_extra_args,
# Cross-process container reuse (issue #20561). The docs claim
# "ONE long-lived container shared across sessions" — this toggle
@ -1417,6 +1418,7 @@ def _create_environment(env_type: str, image: str, cwd: str, timeout: int,
docker_forward_env = cc.get("docker_forward_env", [])
docker_env = cc.get("docker_env", {})
docker_extra_args = cc.get("docker_extra_args", [])
docker_network = cc.get("docker_network", True)
if env_type == "local":
return _LocalEnvironment(cwd=cwd, timeout=timeout)
@ -1439,6 +1441,7 @@ def _create_environment(env_type: str, image: str, cwd: str, timeout: int,
forward_env=docker_forward_env,
env=docker_env,
run_as_host_user=cc.get("docker_run_as_host_user", False),
network=docker_network,
extra_args=docker_extra_args,
persist_across_processes=cc.get("docker_persist_across_processes", True),
)
@ -2208,6 +2211,7 @@ def terminal_tool(
"docker_env": config.get("docker_env", {}),
"docker_run_as_host_user": config.get("docker_run_as_host_user", False),
"docker_extra_args": config.get("docker_extra_args", []),
"docker_network": config.get("docker_network", True),
"docker_persist_across_processes": config.get("docker_persist_across_processes", True),
"docker_orphan_reaper": config.get("docker_orphan_reaper", True),
}