NousResearch/hermes-agent

Collapsing terminal sessions into shared containers

Cluster 37361 · environments. Data as of

Nothing open on GitHub. Fix merged in #41822 on 8 Jun 2026. Check it covers your case.

The short answer

0open issues
0open PRs
3items grouped
Known?
Yes. 3 related items grouped here, 1 issue already closed.
Fix event
A fix was merged to main in PR #41822. Check it covers your case. No release data is tracked.
Tracker
The maintainers' tracker marks this resolved, deciding PR #41822. That is separate from the fix event.
Still open
Nothing open on GitHub.

These issues and PRs concern a bug where Docker creates separate containers per terminal session, preventing shared auth state, and related fixes or features to collapse sessions with matching CWD or subagent task IDs into a shared container.

Open issues0

No open issues.

Open PRs0

No open pull requests.

Fixes on record

Merged to main. A stamp counts the issues a fix is linked to.

  • #41822 fix(terminal): collapse CWD-only overrides to shared container

    merged to main

    files: tests/tools/test_shared_container_task_id.py, tools/terminal_tool.py

    Show the diff
    • tests/tools/test_shared_container_task_id.py
      @@ -105,3 +105,49 @@ def test_get_active_env_honours_rl_override():
               terminal_tool.clear_task_env_overrides("rl-42")
               terminal_tool._active_environments.pop("default", None)
               terminal_tool._active_environments.pop("rl-42", None)
      +
      +
      +def test_cwd_only_override_collapses_to_default():
      +    """CWD-only overrides (ACP adapter workspace tracking) must NOT trigger
      +    container isolation — they should collapse to the shared 'default'
      +    container so all surfaces (TUI, gateway, dashboard) share one sandbox.
      +    Regression for #37361."""
      +    terminal_tool.register_task_env_overrides(
      +        "acp-session-abc", {"cwd": "/home/user/project"}
      +    )
      +    try:
      +        assert (
      +            terminal_tool._resolve_container_task_id("acp-session-abc")
      +            == "default"
      +        )
      +    finally:
      +        terminal_tool.clear_task_env_overrides("acp-session-abc")
      +
      +
      +def test_cwd_plus_docker_image_keeps_own_id():
      +    """When overrides include both cwd AND docker_image, isolation must
      +    still be honoured (RL/benchmark pattern with explicit cwd)."""
      +    terminal_tool.register_task_env_overrides(
      +        "rl-with-cwd", {"docker_image": "myimg:latest", "cwd": "/workspace"}
      +    )
      +    try:
      +        assert (
      +            terminal_tool._resolve_container_task_id("rl-with-cwd")
      +            == "rl-with-cwd"
      +        )
      +    finally:
      +        terminal_tool.clear_task_env_overrides("rl-with-cwd")
      +
      +
      +def test_env_type_override_keeps_own_id():
      +    """env_type is an isolation key — must trigger per-task container."""
      +    terminal_tool.register_task_env_overrides(
      +        "bench-env", {"env_type": "sandbox", "cwd": "/work"}
      +    )
      +    try:
      +        assert (
      +            terminal_tool._resolve_container_task_id("bench-env")
      +            == "bench-env"
      +        )
      +    finally:
      +        terminal_tool.clear_task_env_overrides("bench-env")
    • tools/terminal_tool.py
      @@ -1006,9 +1006,20 @@ def _resolve_container_task_id(task_id: Optional[str]) -> str:
           task_id, we honour it by returning the task_id unchanged -- those
           rollouts need their own isolated sandbox, which is the whole point of
           the override.
      +
      +    CWD-only overrides (registered by the ACP adapter for workspace
      +    tracking) are *not* isolation signals — they should not cause each
      +    session to spin up its own container.  Only overrides containing
      +    backend-specific image keys or ``env_type`` trigger isolation.
           """
      +    _ISOLATION_KEYS = frozenset({
      +        "docker_image", "modal_image", "singularity_image",
      +        "daytona_image", "env_type",
      +    })
           if task_id and task_id in _task_env_overrides:
      -        return task_id
      +        overrides = _task_env_overrides[task_id]
      +        if set(overrides.keys()) & _ISOLATION_KEYS:
      +            return task_id
           return "default"
       
       

1 PR closed without merging

From the close comments: merged via another change 1

  • #37372 fix(terminal): collapse CWD-only overrides to shared container · merged via another change → #41822
Closed issues · 1
  • Closed#37361[Bug]: terminal.backend: docker creates a separate container per session — auth state cannot be shared across TUI, gateway, and dashboard
How this cluster was grouped
  • Link evidence (structural links throughout): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
  • Pairwise link density 0.67: the share of item pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. 1.00 means 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 Lab

At a glance

Subsystem
environments
Merged PRs
#41822
Closed issues
1
Attempts
1 PR closed without merging
Fix link checked
8 Jun 2026

For your agent

The same facts, typed.