Skip to content

fix(tools): do not adopt a stale cwd after an interrupted command - #85654

Merged
teknium1 merged 1 commit into
mainfrom
ethie/desktop-session-cwd
Aug 14, 2026
Merged

teknium1 merged 1 commit into
mainfrom
ethie/desktop-session-cwd

Conversation

@ethernet8023

@ethernet8023 ethernet8023 commented Aug 13, 2026 •

Copy link
Copy Markdown
Collaborator

What does this PR do?

A chat adopted the working directory of a different chat, and every later
command in that chat ran there.

The command wrapper prints the __HERMES_CWD_* marker after the command
returns (tools/environments/base.py:924). A killed or timed-out command never
prints it, so env.cwd still holds the directory of the last command that
FINISHED. One local environment serves every session, because
_resolve_container_task_id (tools/terminal_tool.py:1384) collapses cwd-only
overrides to "default". That leftover directory is therefore routinely
another session's.

Three call sites trusted a directory that the command never reported:

  • The post-command dual-write (tools/terminal_tool.py:3315) copied env.cwd
    into the interrupted session's durable record.
  • The cwd echo (tools/terminal_tool.py:3422) read the same value and told
    the model that it had moved.
  • The reaped-environment rescue (tools/file_tools.py:1443) copied a cached
    snapshot of the same shared value into the session record. Review found
    this sibling after the first version of this PR.

This PR reports the observation instead of inferring it. The marker parse sets
result["cwd_observed"], and the two terminal-tool call sites read that flag.
The file-tools rescue becomes fill-only: it writes the snapshot when the
session has no record, and it never overwrites a record that the session wrote
for itself. When a command reports no directory, the session keeps the
directory that it already had.

This approach is correct because the marker is the only evidence that a command
finished somewhere. The parse already knows whether it found one, so the flag
adds no new state and no new resolver. It also removes the last reads of the
shared env.cwd on the session-record path, which the comment at
tools/terminal_tool.py:1180 asks for.

Related Issue

Fixes #85658

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 🔒 Security fix
  • 📝 Documentation update
  • ✅ Tests (adding or improving test coverage)
  • ♻️ Refactor (no behavior change)
  • 🎯 New skill (bundled or hub)

Changes Made

  • tools/environments/base.py — _extract_cwd_from_output sets
    result["cwd_observed"] when the marker gives a directory for this command.
    The docstring states why an unobserved cwd belongs to no session.
  • tools/environments/local.py — the local override clears the flag when it
    rolls back a path that does not exist. The restored value is also unobserved.
  • tools/terminal_tool.py — the record write (line 3315) and the cwd echo
    (line 3422) both read the flag.
  • tools/file_tools.py — the rescue for a reaped environment ([Bug]: File creation fails silently in long-running conversations #26211) writes
    the cached snapshot only when the session has no record. The snapshot comes
    from the shared environment, so it is not attributable to the session.
  • tests/tools/test_interrupted_command_cwd.py — new. Eight tests against a
    real LocalEnvironment. Two of them drive terminal_tool itself through an
    interrupt, so the gates at the call sites have direct coverage.
  • tests/tools/test_session_cwd_store.py — two fakes simulate the marker
    parse. They moved cwd but did not report the observation, so they no longer
    modelled a completed command. They now return the flag. Two new tests pin the
    fill-only contract of the file-tools rescue.
  • tests/tools/test_vercel_sandbox_environment.py — two assertions compared the
    whole result dictionary against a literal. They now read the two fields that
    they test.

How to Test

  1. Run the changed test files. All 22 pass:

    scripts/run_tests.sh tests/tools/test_interrupted_command_cwd.py tests/tools/test_session_cwd_store.py -q
  2. Prove that the tests detect each fault. Each row reverts one change, runs
    the tests, and fails. I ran all four:

    Mutation Result
    Delete result["cwd_observed"] = True in base.py 6 of 8 fail in test_interrupted_command_cwd.py
    Revert the record write to if not workdir: 1 of 8 fails (test_interrupt_keeps_record_and_echoes_no_cwd)
    Revert the echo to the ungated getattr(env, "cwd", None) 1 of 8 fails (test_interrupt_keeps_record_and_echoes_no_cwd)
    Remove the get_session_cwd(...) is None guard in file_tools.py 1 of 14 fails (test_existing_record_survives_the_rescue)

    The first version of this PR gated the two terminal-tool call sites but
    tested them through a copy of the gate inside the test file. Review showed
    that a revert of either call site passed every test. The two
    TestTerminalToolReadsTheFlag tests close that gap: they call
    tt.terminal_tool() itself.

  3. Reproduce the original defect with the script in [Bug]: An interrupted command adopts another session's working directory #85658. Before the change
    the record holds the other chat's directory. After the change it holds its
    own.

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits (fix(scope):, feat(scope):, etc.)
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this fix/feature (no unrelated commits)
  • I've run pytest tests/ -q and all tests pass — see the detail below
  • I've added tests for my changes (required for bug fixes, strongly encouraged for features)
  • I've tested on my platform: NixOS, Linux 7.1.0

Test detail: I ran the directories that this change touches, not the whole
suite. CI owns the full run.

  • tests/tools/ reports 27 failures. I ran the same directory on ac9b9f54c
    in a clean worktree and compared the failure names. The sets are identical,
    so this branch adds no failure. One of the 27 needs the network
    (test_web_providers.py, "DNS resolution failed").
  • tests/tui_gateway/ reports 421 passed and 0 failed.
  • The changed test files report 22 passed
    (test_interrupted_command_cwd.py: 8, test_session_cwd_store.py: 14).
  • tests/tools/test_file_tools_cwd_resolution.py and
    tests/tools/test_file_tools.py report 56 passed and 2 skipped, so the
    fill-only rescue does not regress the [Bug]: File creation fails silently in long-running conversations #26211 paths.

I started a full scripts/run_tests.sh run and stopped it before it finished,
so I make no claim about the directories that I did not run.

Documentation & Housekeeping

  • I've updated relevant documentation (README, docs/, docstrings) — the
    docstrings of the changed functions state the new contract
  • I've updated cli-config.yaml.example if I added/changed config keys — N/A
  • I've updated CONTRIBUTING.md or AGENTS.md if I changed architecture or workflows — N/A
  • I've considered cross-platform impact (Windows, macOS) per the compatibility guide
  • I've updated tool descriptions/schemas if I changed tool behavior — N/A

Cross-platform detail: the flag rides the result dictionary, so it is
independent of the host. scripts/check-windows-footguns.py --diff origin/main
reports nothing on the lines that this PR adds. The Windows-specific path is
the local override in local.py, which clears the flag on a rollback. The
rollback exists for the MSYS path normalization that Git Bash needs.

Screenshots / Logs

The defect, before the change:

shared env.cwd after other chat: /tmp/…/otherchat_4tfd78l7
my interrupted command: {'out': '[Command timed out after 2s]', 'exit': 124}
   my record became   : /tmp/…/otherchat_4tfd78l7      <-- the other chat
   (repo was          : /tmp/…/repo_217_imog )

The same sequence, after the change:

A: my chat cds into its repo   : {'exit': 0, 'cwd': '/tmp/…/repo_jwnktgnz'}
   my record: True /tmp/…/repo_jwnktgnz

B: OTHER chat works elsewhere  : {'exit': 0, 'cwd': '/tmp/…/otherchat__i3317hp'}
   shared env.cwd is now other : True

C: my chat's command INTERRUPTED: {'exit': 124}
   my record after interrupt   : /tmp/…/repo_jwnktgnz
   STILL MINE (not other)?     : True

D: my next plain command runs in: /tmp/…/repo_jwnktgnz

Notes for review

This PR adds one key to the execute() result dictionary. A test that compares
that dictionary against a literal will see it. Two such tests are in this diff.

This PR corrects one of two defects behind the original report. The second
defect is separate. _completion_cwd (tui_gateway/server.py:2411) gives a
detached desktop session the value of TERMINAL_CWD, which the app pins to the
home directory. The database row correctly records no workspace, but the prompt
and the terminal disagree with it. That correction touches a different resolver
and a race in the renderer, so it belongs in its own PR.

@alt-glitch alt-glitch added type/bug Something isn't working P2 Medium — degraded but workaround exists tool/terminal Terminal execution and process management backend/local Local shell execution sweeper:risk-session-state Sweeper risk: may lose/corrupt/mis-associate session or context state labels Aug 13, 2026
@github-actions

github-actions Bot commented Aug 13, 2026 •

Copy link
Copy Markdown
Contributor

૮ >ﻌ< ა ci review

ran on 90a21fe — fix(tools): do not adopt a stale cwd after an interrupted co

⚠️ Warnings

OSV vulnerability scan · View job

5 known vulnerabilities found in pinned dependencies.

How to fix:

Review the findings in the Security tab. Update the affected dependencies if a patched version is available.


debug info

CI timings

CI timings · View report · View job

Wall time 5m25s vs 7m9s (-24.2%). 12 job(s) slower, 9 faster, 3 unchanged.

  • Python tests / Run tests slice 2/12: -48.0s
  • Python tests / Run tests slice 6/12: +38.0s
  • Python tests / Run tests slice 9/12: +13.0s
  • OS-specific tests / Windows-only tests: +13.0s
  • Python tests / Run tests slice 4/12: +8.0s

The command wrapper prints the cwd marker after the command returns. A
killed or timed-out command emits no marker, so ``env.cwd`` still holds the
directory of the last command to FINISH. One local environment serves every
session, because ``_resolve_container_task_id`` collapses cwd-only overrides
to ``"default"``. That leftover directory is therefore routinely another
session's.

The post-command dual-write copied ``env.cwd`` into the interrupted session's
durable record. Every later command in that session then ran in the foreign
directory, and the cwd echo told the model it had moved there. A desktop chat
silently re-homed into a worktree that another chat had opened.

Report the observation instead of inferring it. The marker parse now sets
``result["cwd_observed"]``, and both the record write and the echo read that
flag. The local override clears the flag when it rolls back a path that does
not exist, because the restored value is also unobserved. When a command
reports no cwd, the session keeps the directory it already had.

This needs no second session to be wrong: a lone session that interrupts a
command re-adopts a stale value too. A second session only makes the wrong
directory belong to somebody else.

The same class of write exists in the file-tools rescue for a reaped
environment (#26211). That rescue copied the cached snapshot of the shared
``env.cwd`` into the session record. The rescue is now fill-only: it writes
the snapshot when the session has no record, and it never overwrites a
record that the session wrote for itself.

The tests drive ``terminal_tool`` itself through an interrupt, not a copy of
its gate. Review found that a revert of either call site passed the first
version of the tests. Each gate now has a test that fails when the gate is
removed (verified by mutation).

Two exact-dict assertions in the Vercel sandbox tests now assert the two
fields they care about, so a new result key does not fail them.
@ethernet8023
ethernet8023 force-pushed the ethie/desktop-session-cwd branch from c93a007 to 90a21fe Compare August 13, 2026 22:21
@teknium1

Copy link
Copy Markdown
Collaborator

Deep review

Checked out 90a21fe locally and re-ran the three touched test files against the repo venv: 38/38 pass (test_interrupted_command_cwd.py 8, test_session_cwd_store.py 16, test_vercel_sandbox_environment.py 14 relevant). CI is green on the full matrix. Findings below.

Root cause — confirmed on main

The premise holds up exactly as described:

  • tools/environments/base.py builds the command wrapper so the __HERMES_CWD_* marker prints after the command returns. A killed/timed-out command therefore emits no marker, and env.cwd keeps whatever the last finished command left there.
  • _resolve_container_task_id collapses cwd-only local sessions to "default", so one LocalEnvironment is genuinely shared across sessions — the leftover env.cwd is routinely another session's directory.
  • Pre-PR, the dual-write at tools/terminal_tool.py:3315 was gated only on not workdir, so an interrupt stamped the foreign directory into the interrupted session's durable record, and every subsequent bare command in that session ran there. Reproduced the shape of this with the shared-env test in the PR; it fails on main and passes on the branch.

Design — the right fix for this class

Deriving the gate from the marker parse itself (result["cwd_observed"]) is the correct mechanism: the marker is the only evidence a command finished somewhere, the parse already knows whether it found one, and the flag adds no new state, resolver, or ownership model. It also converges on the direction the rearch comment at terminal_tool.py:~1180 asks for (stop reading shared env.cwd on the session-record path).

Setting the flag in the base _extract_cwd_from_output means every backend that uses the marker parse (local, Docker, SSH, Modal, Daytona, Singularity) gets the fix for free — no per-backend duplication.

Sibling-site audit (the "fix the class, not the site" check)

I grepped every env.cwd → session-record path on the branch:

Site Status
terminal_tool.py:3315 record dual-write gated ✅
terminal_tool.py:3422 cwd echo to the model gated ✅
file_tools.py:1443 reaped-env rescue (#26211) fill-only ✅
terminal_tool.py:1260 (register_task_env_overrides) write path from an explicit workspace override — correctly untouched
terminal_tool.py:2805 (guard_cwd_base) pre-command guard resolution, not a durable record — correctly untouched
delegate_tool.py worktree seeding reads get_session_cwd (the record store), not shared env.cwd — unaffected

No ungated sibling remains. The file_tools change also preserves the #26211 contract (recordless sessions still get the rescue) and the new TestReapedEnvFallbackIsFillOnly pins both directions.

Edge cases checked

  • Windows/MSYS rollback (local.py:1666-1671): clearing cwd_observed when the normalized path doesn't exist is right — the restored value is the previous cwd, which this command didn't observe either. Same reasoning as the interrupt case, consistently applied.
  • New result-dict key: cwd_observed rides the execute() result, so whole-dict literal comparisons see it. The two such tests in test_vercel_sandbox_environment.py were converted to field asserts; green CI across the full matrix indicates no other literal comparisons exist.
  • (result or {}).get(...): defensively correct — at both call sites result is always a dict by the time the gate runs, so this is belt-and-suspenders, not a behavior change.
  • Same-session interrupt (no second chat): covered by test_single_session_keeps_its_own_prior_directory — the session keeps its own prior record rather than adopting the shared env's drift. Good catch; this is the case a narrower fix would have missed.

Test quality

The mutation table in the PR body is the standout here — each gate has a test that fails when that gate alone is reverted, and the TestTerminalToolReadsTheFlag class drives tt.terminal_tool() itself rather than a reimplementation of the gate (closing the exact gap the first version of this PR had). This is the falsification discipline we want in every fix PR.

Scope note

The PR body correctly identifies the second, independent defect behind the original report (_completion_cwd in tui_gateway/server.py handing detached desktop sessions the app-pinned TERMINAL_CWD) and leaves it for its own PR. Agreed — different resolver, different surface, keep it out of this diff.

Verdict

Correct root cause, minimal mechanism, class-wide (all backends + all three call sites), well-falsified tests, no regression to #26211, green CI. No changes requested. Pending maintainer merge decision.

@teknium1
teknium1 merged commit 16a173a into main Aug 14, 2026
45 checks passed
@teknium1
teknium1 deleted the ethie/desktop-session-cwd branch August 14, 2026 03:30
gabrielcosi pushed a commit to gabrielcosi/home-ops that referenced this pull request Sep 1, 2026
…8.27 ➔ v2026.8.31) (#606)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/gabrielcosi/hermes-agent](https://github.com/NousResearch/hermes-agent) | patch | `v2026.8.27` → `v2026.8.31` |

---

### Release Notes

<details>
<summary>NousResearch/hermes-agent (ghcr.io/gabrielcosi/hermes-agent)</summary>

### [`v2026.8.31`](https://github.com/NousResearch/hermes-agent/releases/tag/v2026.8.31): Hermes Agent v0.21.0 (v2026.8.31)

[Compare Source](https://github.com/NousResearch/hermes-agent/compare/v2026.8.27...v2026.8.31)

##### Hermes Agent v0.21.0 (v2026.8.31)

**Release Date:** August 31, 2026
**Since v0.20.0:** \~5,800 commits · \~2,475 merged PRs · \~5,680 files changed · \~869,000 insertions · \~135,000 deletions · **\~2,100 issues closed** · 760+ contributors

> **The Pantheon Release.** v0.20.0 made Hermes the herald — he spoke, and he carried word to other agents. In v0.21.0 the gods assemble. Bot Mode ships built into the desktop app: a society of named agents with their own faces and group chats, where your bots talk to each other — and to you — like a team, not a toolbox. Around that spine: cron jobs gained memory and continuity so scheduled agents actually learn between runs, subagents can be steered live mid-flight, the MCP surface became a real command center, and the agent can now drive the desktop's own browser. This release rolls up everything from the v0.20.1–v0.20.6 infrastructure patch tags — those windows are fully documented here.

***

##### ✨ Highlights

- **Bot Mode — your agents become a society, built in** — Bot Mode is now a bundled, default-on part of the desktop app: every agent profile gets a name, a deterministic avatar face (with randomize/lock controls), and a place in a shared roster. Create Discord-style group chats where multiple bots and you talk in one room, @&#8203;-mention any bot from the composer, and give rooms names and pictures. Before, "multi-agent" meant plumbing; now it looks like a chat app full of coworkers. ([#&#8203;87886](https://github.com/NousResearch/hermes-agent/pull/87886), [#&#8203;88243](https://github.com/NousResearch/hermes-agent/pull/88243), [#&#8203;89386](https://github.com/NousResearch/hermes-agent/pull/89386), [#&#8203;96726](https://github.com/NousResearch/hermes-agent/pull/96726) — [@&#8203;teknium1](https://github.com/teknium1), [@&#8203;OutThisLife](https://github.com/OutThisLife), [@&#8203;dokterdok](https://github.com/dokterdok))

- **`hermes peer` — bot-to-bot DMs between your agents** — Any Hermes agent can now message any other by handle, across profiles and gateways, from the CLI or from inside a conversation. Ask your research bot to hand findings to your coding bot and get the reply back where you can read it. Replies land in each agent's canonical Bot Chat, so conversations between agents are durable and inspectable, not fire-and-forget. ([#&#8203;88725](https://github.com/NousResearch/hermes-agent/pull/88725), [#&#8203;88178](https://github.com/NousResearch/hermes-agent/pull/88178), [#&#8203;91487](https://github.com/NousResearch/hermes-agent/pull/91487) — [@&#8203;teknium1](https://github.com/teknium1))

- **Cron jobs that remember** — Scheduled jobs stopped being goldfish. Cron agents now load and update persistent memory like every other agent, `continuity=true` carries each run's output into the next (so a monitor can dedupe against what it already reported), every job gets a durable notepad scratchpad, monitor-mode jobs skip the LLM entirely when nothing changed, and cron output can land in a bot's canonical Bot Chat — where the bot actually responds. Your 9am briefing job now knows what it told you yesterday. ([#&#8203;91447](https://github.com/NousResearch/hermes-agent/pull/91447), [#&#8203;80774](https://github.com/NousResearch/hermes-agent/pull/80774), [#&#8203;81139](https://github.com/NousResearch/hermes-agent/pull/81139), [#&#8203;81138](https://github.com/NousResearch/hermes-agent/pull/81138), [#&#8203;91487](https://github.com/NousResearch/hermes-agent/pull/91487) — [@&#8203;teknium1](https://github.com/teknium1), [@&#8203;smwbev](https://github.com/smwbev))

- **Steer your subagents while they run** — `delegate_task` gained live orchestration: list running children, steer one mid-flight with a course correction, or stop it early and keep the partial result. Add optional JSON-schema validation on child outputs, per-delegation cost surfaced in results, and raised defaults (250 iterations, 10 concurrent children) — delegation went from fire-and-pray to actually managed parallel work. ([#&#8203;85232](https://github.com/NousResearch/hermes-agent/pull/85232), [#&#8203;81144](https://github.com/NousResearch/hermes-agent/pull/81144), [#&#8203;81142](https://github.com/NousResearch/hermes-agent/pull/81142), [#&#8203;86506](https://github.com/NousResearch/hermes-agent/pull/86506), [#&#8203;86745](https://github.com/NousResearch/hermes-agent/pull/86745) — [@&#8203;teknium1](https://github.com/teknium1))

- **The MCP command center** — MCP servers and the catalog merged into one coherent desktop page with drag-in "paste anything" import, background health checks that nudge you to re-auth before a tool call fails, a fleet cost/usage overlay showing schema token estimates and 30-day usage per server, and `hermes://` deep links that install an MCP server with explicit confirmation. Managing twenty MCP servers used to be config-file archaeology; now it's a dashboard. ([#&#8203;87525](https://github.com/NousResearch/hermes-agent/pull/87525), [#&#8203;87572](https://github.com/NousResearch/hermes-agent/pull/87572), [#&#8203;87576](https://github.com/NousResearch/hermes-agent/pull/87576), [#&#8203;87579](https://github.com/NousResearch/hermes-agent/pull/87579), [#&#8203;87581](https://github.com/NousResearch/hermes-agent/pull/87581) — [@&#8203;teknium1](https://github.com/teknium1))

- **A CLI power wave** — Ctrl+P opens a fuzzy command palette, the `/model` picker filters as you type, `/status` shows reasoning mode, pending approvals, and context usage, and the status bar can display live cache-hit %, latency, and tokens/sec with per-field toggles. Plus: a global emergency stop, session pin/unpin, rotating task-oriented composer placeholders — and Ghostty-level **terminal pets**, because a companion should have a companion. ([#&#8203;90730](https://github.com/NousResearch/hermes-agent/pull/90730), [#&#8203;90717](https://github.com/NousResearch/hermes-agent/pull/90717), [#&#8203;90745](https://github.com/NousResearch/hermes-agent/pull/90745), [#&#8203;98250](https://github.com/NousResearch/hermes-agent/pull/98250), [#&#8203;98282](https://github.com/NousResearch/hermes-agent/pull/98282), [#&#8203;97666](https://github.com/NousResearch/hermes-agent/pull/97666) — [@&#8203;teknium1](https://github.com/teknium1), and salvaged community work)

- **The agent drives the desktop's browser** — The in-app browser stopped being a window the agent could only look at: Hermes now navigates, clicks, and reads it directly, and pages can be popped out to your system browser with full link context menus. Ask it to walk a docs site or debug a web app and watch it happen inside your own app. ([#&#8203;90197](https://github.com/NousResearch/hermes-agent/pull/90197), [#&#8203;89366](https://github.com/NousResearch/hermes-agent/pull/89366) — [@&#8203;OutThisLife](https://github.com/OutThisLife), [@&#8203;ethernet8023](https://github.com/ethernet8023))

- **Six new providers and a model catalog wave** — Meta Model API (Muse Spark) arrives as a built-in provider, alongside CommandCode, Tencent TokenPlan, Nebius Token Factory, Ramp Router, and Actual Computer. The catalogs picked up GLM-5.3-Flash, qwen3.8-max/flash, Gemini 3.7 Flash, MiniMax M3 free, and Nemotron 3.5 Lightning — and `model_overrides` lets you patch any model's context window or pricing yourself without waiting on a release. ([#&#8203;88565](https://github.com/NousResearch/hermes-agent/pull/88565), [#&#8203;88308](https://github.com/NousResearch/hermes-agent/pull/88308), [#&#8203;97917](https://github.com/NousResearch/hermes-agent/pull/97917), [#&#8203;97916](https://github.com/NousResearch/hermes-agent/pull/97916), [#&#8203;97915](https://github.com/NousResearch/hermes-agent/pull/97915), [#&#8203;85560](https://github.com/NousResearch/hermes-agent/pull/85560) — [@&#8203;teknium1](https://github.com/teknium1) and community)

- **Security hardening across the board** — Protected agent-instruction files (AGENTS.md, skills, memory stores) now always require write approval so a prompt-injected agent can't quietly rewrite its own standing orders. A deep redaction sweep closed secret-leak gaps across terminal errors, `.env` file reads, checkpoints, and ACP logs; the approval system learned Windows destructive commands; and macOS permission grants finally survive updates via a stable TCC signing identity. ([#&#8203;81152](https://github.com/NousResearch/hermes-agent/pull/81152), [#&#8203;80965](https://github.com/NousResearch/hermes-agent/pull/80965), [#&#8203;84428](https://github.com/NousResearch/hermes-agent/pull/84428), [#&#8203;95091](https://github.com/NousResearch/hermes-agent/pull/95091) — [@&#8203;teknium1](https://github.com/teknium1) and community)

***

##### 🏗️ Core Agent & Architecture

##### Providers & Models

- **New providers:** Actual Computer inference ([#&#8203;79644](https://github.com/NousResearch/hermes-agent/pull/79644), salvage of [#&#8203;26491](https://github.com/NousResearch/hermes-agent/issues/26491)), CommandCode with GOAT/Pro/Max plans ([#&#8203;88308](https://github.com/NousResearch/hermes-agent/pull/88308), salvage of [#&#8203;32909](https://github.com/NousResearch/hermes-agent/issues/32909)), Meta Model API (Muse Spark) as a built-in provider plugin ([#&#8203;88565](https://github.com/NousResearch/hermes-agent/pull/88565)), Tencent TokenPlan ([#&#8203;97917](https://github.com/NousResearch/hermes-agent/pull/97917)), Nebius Token Factory ([#&#8203;97916](https://github.com/NousResearch/hermes-agent/pull/97916)), and Ramp Router ([#&#8203;97915](https://github.com/NousResearch/hermes-agent/pull/97915)).
- **Model catalog wave:** qwen3.8-max and qwen3.8-flash ([#&#8203;78024](https://github.com/NousResearch/hermes-agent/pull/78024), [#&#8203;96979](https://github.com/NousResearch/hermes-agent/pull/96979)), Gemini 3.7 Flash ([#&#8203;85526](https://github.com/NousResearch/hermes-agent/pull/85526)), GLM-5.3-Flash across OpenRouter/Nous/z.ai/OpenCode ([#&#8203;95621](https://github.com/NousResearch/hermes-agent/pull/95621), [#&#8203;96293](https://github.com/NousResearch/hermes-agent/pull/96293)), MiniMax M3 + Inkling free SKUs ([#&#8203;96264](https://github.com/NousResearch/hermes-agent/pull/96264)), Nemotron 3.5 Lightning ([#&#8203;84645](https://github.com/NousResearch/hermes-agent/pull/84645)), Meta Muse Spark 1.2 ([#&#8203;88600](https://github.com/NousResearch/hermes-agent/pull/88600)).
- **Per-model metadata overrides** via `model_overrides` config — patch context windows, pricing, or capabilities for any model without waiting on a release ([#&#8203;85560](https://github.com/NousResearch/hermes-agent/pull/85560)).
- **Data-training-tier warnings** — a unified selection-guard registry warns you across every picker surface when a model trains on your data ([#&#8203;85917](https://github.com/NousResearch/hermes-agent/pull/85917)).
- **Pip-installed model providers** discovered via entry points — third parties can ship providers as packages ([#&#8203;85504](https://github.com/NousResearch/hermes-agent/pull/85504), salvage [#&#8203;81419](https://github.com/NousResearch/hermes-agent/issues/81419)).
- **Prompt caching engaged for LiteLLM Claude** on the OpenAI wire ([#&#8203;87517](https://github.com/NousResearch/hermes-agent/pull/87517) — [@&#8203;kshitijk4poor](https://github.com/kshitijk4poor)) and api.meta.ai routed through the Responses API for caching ([#&#8203;88601](https://github.com/NousResearch/hermes-agent/pull/88601)).
- **Codex GPT context defaults** back to the verified 272K, with explicit -900k picker variants for the large window ([#&#8203;92797](https://github.com/NousResearch/hermes-agent/pull/92797)).

##### Agent Loop & Reliability

- **Stalled-provider recovery** — a stalled stream no longer leaves Desktop silent or burns the retry budget ([#&#8203;87236](https://github.com/NousResearch/hermes-agent/pull/87236) — [@&#8203;fangliquanflq](https://github.com/fangliquanflq)).
- **MoA hardening cluster** — the Mixture-of-Agents facade now survives client rebuilds, stream retries, provider rotation, and fallback/restore without leaking prepared requests to native clients ([#&#8203;90212](https://github.com/NousResearch/hermes-agent/pull/90212) and siblings).
- **Structured-output resilience** — auxiliary calls translate `response_format` for Anthropic wires and retry when a provider rejects structured output ([#&#8203;89589](https://github.com/NousResearch/hermes-agent/pull/89589) — [@&#8203;ethernet8023](https://github.com/ethernet8023)).
- **Compression: lean tail mode** + a compaction recall eval harness to measure what compression actually preserves ([#&#8203;87326](https://github.com/NousResearch/hermes-agent/pull/87326)).
- **Oversized tool results spill to cache** instead of being truncated in sandbox-less sessions ([#&#8203;89028](https://github.com/NousResearch/hermes-agent/pull/89028)).
- **`clarify` asks multiple independent questions in one call** — one form instead of a chain of round-trips ([#&#8203;89467](https://github.com/NousResearch/hermes-agent/pull/89467) — [@&#8203;ethernet8023](https://github.com/ethernet8023)).
- **Verify subsystem** (port from superagent-ai/grok-cli): run-recipe detection + environment manifest so "it works" claims are backed by detected build/test commands ([#&#8203;80686](https://github.com/NousResearch/hermes-agent/pull/80686)).

##### Sessions & State

- **Resumed transcripts never re-append** — `_db_persisted` stamped at row load time ([#&#8203;92539](https://github.com/NousResearch/hermes-agent/pull/92539) — [@&#8203;kshitijk4poor](https://github.com/kshitijk4poor)).
- **SessionDB context-manager protocol** for leak-free DB lifecycles ([#&#8203;88048](https://github.com/NousResearch/hermes-agent/pull/88048) — [@&#8203;jackulau](https://github.com/jackulau)).
- **Instant session naming** from the opening message, with sticky titles across resume ([#&#8203;81985](https://github.com/NousResearch/hermes-agent/pull/81985) — [@&#8203;OutThisLife](https://github.com/OutThisLife)).
- **Session pin/unpin from the CLI** — durable keep flags ([#&#8203;80761](https://github.com/NousResearch/hermes-agent/pull/80761)).

##### 📱 Messaging Platforms (Gateway)

- **Slack native live cards** — real streaming replies via chat.startStream plus opt-in plan/task cards for tool progress ([#&#8203;85476](https://github.com/NousResearch/hermes-agent/pull/85476)); outbound link-preview suppression across native and relay planes ([#&#8203;95142](https://github.com/NousResearch/hermes-agent/pull/95142) — [@&#8203;benbarclay](https://github.com/benbarclay)).
- **Telegram inline picker** — every command and skill searchable via [@&#8203;botname](https://github.com/botname), bypassing Telegram's command-menu cap ([#&#8203;98317](https://github.com/NousResearch/hermes-agent/pull/98317)).
- **Relay matured** — native static/dynamic plugin initialization ([#&#8203;77915](https://github.com/NousResearch/hermes-agent/pull/77915) — [@&#8203;bbednarski9](https://github.com/bbednarski9)), live-card ops with draft streaming + task cards ([#&#8203;85796](https://github.com/NousResearch/hermes-agent/pull/85796) — [@&#8203;victor-kyriazakos](https://github.com/victor-kyriazakos)), session-span segmentation ([#&#8203;85467](https://github.com/NousResearch/hermes-agent/pull/85467)), voice-note STT restored over the relay lane ([#&#8203;95274](https://github.com/NousResearch/hermes-agent/pull/95274) — [@&#8203;benbarclay](https://github.com/benbarclay)), transport dedupe/fail-fast fixes ([#&#8203;89584](https://github.com/NousResearch/hermes-agent/pull/89584)).
- **Gateway control socket** — fleet consumers query the gateway itself (identify/status), and updaters pause gateways gracefully instead of tree-killing them ([#&#8203;92447](https://github.com/NousResearch/hermes-agent/pull/92447), [#&#8203;95695](https://github.com/NousResearch/hermes-agent/pull/95695)).
- **Selective multiplex profile serving** ([#&#8203;83400](https://github.com/NousResearch/hermes-agent/pull/83400)), per-profile MCP lifecycle RPCs ([#&#8203;86473](https://github.com/NousResearch/hermes-agent/pull/86473)), roster previews showing the latest message ([#&#8203;85905](https://github.com/NousResearch/hermes-agent/pull/85905)), concise background-process notifications by default ([#&#8203;85877](https://github.com/NousResearch/hermes-agent/pull/85877)).
- **Turn-reaper stack dumps** — when the watchdog fires, wedged worker stacks are captured for diagnosis ([#&#8203;86248](https://github.com/NousResearch/hermes-agent/pull/86248)), with loop-watchdog tuning knobs wired end-to-end ([#&#8203;92317](https://github.com/NousResearch/hermes-agent/pull/92317)).
- **Split-delivery bug class closed** — swallowed finals and split deliveries fixed as a class ([#&#8203;79669](https://github.com/NousResearch/hermes-agent/pull/79669) — [@&#8203;kshitijk4poor](https://github.com/kshitijk4poor), salvages [#&#8203;78558](https://github.com/NousResearch/hermes-agent/issues/78558)).

##### 🖥️ Desktop App

- **Bot Mode built in** — see Highlights. Full sub-catalog: attributed agent-to-agent message cards ([#&#8203;85855](https://github.com/NousResearch/hermes-agent/pull/85855)), sender-side delivery notices ([#&#8203;85888](https://github.com/NousResearch/hermes-agent/pull/85888)), paint-first hydration for instant wakes ([#&#8203;89510](https://github.com/NousResearch/hermes-agent/pull/89510)), editable group names and room pictures ([#&#8203;89371](https://github.com/NousResearch/hermes-agent/pull/89371)), Routines pane ([#&#8203;88731](https://github.com/NousResearch/hermes-agent/pull/88731)), rebuilt on the app design system ([#&#8203;96726](https://github.com/NousResearch/hermes-agent/pull/96726) — [@&#8203;OutThisLife](https://github.com/OutThisLife)).
- **In-app browser the agent can drive** — the agent uses the desktop's browser tab, not just looks at it ([#&#8203;90197](https://github.com/NousResearch/hermes-agent/pull/90197) — [@&#8203;OutThisLife](https://github.com/OutThisLife)), with external-open + link context menus ([#&#8203;89366](https://github.com/NousResearch/hermes-agent/pull/89366)).
- **Detached update hand-off on every OS** — quit → update → reopen with a single shim window; Windows desktop updates no longer park on "Updating Hermes" ([#&#8203;83634](https://github.com/NousResearch/hermes-agent/pull/83634), [#&#8203;90937](https://github.com/NousResearch/hermes-agent/pull/90937), [#&#8203;95897](https://github.com/NousResearch/hermes-agent/pull/95897)).
- **Quality-of-life wave** — HUD snaps to cursor on ⌘⇧G ([#&#8203;83130](https://github.com/NousResearch/hermes-agent/pull/83130)), paste into the composer without focusing it ([#&#8203;84955](https://github.com/NousResearch/hermes-agent/pull/84955)), per-turn duration badges ([#&#8203;87245](https://github.com/NousResearch/hermes-agent/pull/87245)), readable macOS window translucency ([#&#8203;88744](https://github.com/NousResearch/hermes-agent/pull/88744)), Linux launcher entry ([#&#8203;76456](https://github.com/NousResearch/hermes-agent/pull/76456)), Linux keychain auto-detection ([#&#8203;84903](https://github.com/NousResearch/hermes-agent/pull/84903)), cron + blueprint recipes in the sidebar ([#&#8203;85162](https://github.com/NousResearch/hermes-agent/pull/85162)).
- **Send Diagnostics** — error cards can upload a redacted debug bundle with a support handoff ([#&#8203;92020](https://github.com/NousResearch/hermes-agent/pull/92020)).
- **Seq-stamped event replay** — lossless desktop reconnect over WebSocket ([#&#8203;94219](https://github.com/NousResearch/hermes-agent/pull/94219) — [@&#8203;kshitijk4poor](https://github.com/kshitijk4poor)).
- **God-file decomposition** — the desktop codebase refactored into atomic modules ([#&#8203;89611](https://github.com/NousResearch/hermes-agent/pull/89611) — [@&#8203;OutThisLife](https://github.com/OutThisLife)).

##### 🖥️ CLI & TUI

- See Highlights for the power wave (command palette, fuzzy /model, richer /status, live status-bar metrics, pets).
- **`hermes approval-check`** — dry-run approval verdicts for a command without running it ([#&#8203;81137](https://github.com/NousResearch/hermes-agent/pull/81137)).
- **Session titles in status bars** ([#&#8203;81947](https://github.com/NousResearch/hermes-agent/pull/81947)); subagent model exposed in the auxiliary-models picker ([#&#8203;80463](https://github.com/NousResearch/hermes-agent/pull/80463)).
- **Ctrl+C fixed** — stopped pushing the Kitty keyboard protocol that broke interrupts ([#&#8203;87074](https://github.com/NousResearch/hermes-agent/pull/87074)).

##### 🔧 Tool System & MCP

- **MCP command center** — see Highlights ([#&#8203;87525](https://github.com/NousResearch/hermes-agent/pull/87525) et al.).
- **Interrupted commands no longer poison cwd** — the terminal won't adopt a stale working directory after an interrupt ([#&#8203;85654](https://github.com/NousResearch/hermes-agent/pull/85654) — [@&#8203;ethernet8023](https://github.com/ethernet8023)).
- **Windows rename contention recovery** ([#&#8203;84852](https://github.com/NousResearch/hermes-agent/pull/84852) — [@&#8203;OutThisLife](https://github.com/OutThisLife)); colon-bearing session IDs no longer break sandbox mounts ([#&#8203;93488](https://github.com/NousResearch/hermes-agent/pull/93488), consolidated 6 PRs).
- **Vision output uncapped** — aux vision calls stop clamping max\_tokens ([#&#8203;75253](https://github.com/NousResearch/hermes-agent/pull/75253) — [@&#8203;adikpb](https://github.com/adikpb)).
- **Subagent work protected** — delegate no longer deletes a child's uncommitted work when git inspection fails ([#&#8203;88419](https://github.com/NousResearch/hermes-agent/pull/88419) — [@&#8203;kshitijk4poor](https://github.com/kshitijk4poor)).

##### 🧩 Skills Ecosystem

- **Productivity skill wave** (salvaged from [@&#8203;community](https://github.com/community) proposals): document-to-action-items, meeting-action-items, email-inbox-triage, github-issue-to-pr, weekly-review-planning, competitor-news-monitor, product-price-monitor, social-media-content-calendar ([#&#8203;81185](https://github.com/NousResearch/hermes-agent/pull/81185), [#&#8203;81749](https://github.com/NousResearch/hermes-agent/pull/81749), [#&#8203;81672](https://github.com/NousResearch/hermes-agent/pull/81672), [#&#8203;81708](https://github.com/NousResearch/hermes-agent/pull/81708), [#&#8203;81936](https://github.com/NousResearch/hermes-agent/pull/81936), [#&#8203;81945](https://github.com/NousResearch/hermes-agent/pull/81945), [#&#8203;81906](https://github.com/NousResearch/hermes-agent/pull/81906), [#&#8203;81942](https://github.com/NousResearch/hermes-agent/pull/81942)).
- **HAR-derived API clients** — watch a website once, then call its hidden API directly with no browser ([#&#8203;70823](https://github.com/NousResearch/hermes-agent/pull/70823)).
- **publish-site** — versioned website publishing to GitHub/Cloudflare/Netlify Pages ([#&#8203;72189](https://github.com/NousResearch/hermes-agent/pull/72189)); **session-librarian** for prompt-driven session management ([#&#8203;84917](https://github.com/NousResearch/hermes-agent/pull/84917)); **blocked-page-recovery** fallback ladder ([#&#8203;84906](https://github.com/NousResearch/hermes-agent/pull/84906)); **merge-reconciler** for neutral multi-agent conflict resolution ([#&#8203;83063](https://github.com/NousResearch/hermes-agent/pull/83063)); Box productivity skill ([#&#8203;85767](https://github.com/NousResearch/hermes-agent/pull/85767)); ast-grep codemods ([#&#8203;80892](https://github.com/NousResearch/hermes-agent/pull/80892)); draw-your-font + simple-english optional skills ([#&#8203;80814](https://github.com/NousResearch/hermes-agent/pull/80814), [#&#8203;80811](https://github.com/NousResearch/hermes-agent/pull/80811)); plan-interrogation (evolved grill-me) ([#&#8203;97831](https://github.com/NousResearch/hermes-agent/pull/97831)).
- **Advisory SKILL.md linter on create** ([#&#8203;81896](https://github.com/NousResearch/hermes-agent/pull/81896)); skills-hub live-repo fallback for missing optional skills ([#&#8203;82780](https://github.com/NousResearch/hermes-agent/pull/82780)).

##### ⏰ Cron, Delegation & Multi-Agent

- **Cron memory + continuity** — see Highlights ([#&#8203;91447](https://github.com/NousResearch/hermes-agent/pull/91447), [#&#8203;80774](https://github.com/NousResearch/hermes-agent/pull/80774)).
- **Monitor-mode jobs** with hash-suppressed change detection ([#&#8203;81138](https://github.com/NousResearch/hermes-agent/pull/81138)); per-job durable notepads ([#&#8203;81139](https://github.com/NousResearch/hermes-agent/pull/81139)); pre-dispatch config validation ([#&#8203;81140](https://github.com/NousResearch/hermes-agent/pull/81140)); acked failure signatures stop re-pinging ([#&#8203;95017](https://github.com/NousResearch/hermes-agent/pull/95017)); per-job reasoning-effort pinning ([#&#8203;91244](https://github.com/NousResearch/hermes-agent/pull/91244)); "Trigger now" executes immediately and safely ([#&#8203;70638](https://github.com/NousResearch/hermes-agent/pull/70638) — [@&#8203;smwbev](https://github.com/smwbev)); model-drift impact surfaced in Desktop ([#&#8203;83266](https://github.com/NousResearch/hermes-agent/pull/83266) — [@&#8203;ctaylor86](https://github.com/ctaylor86)).
- **Live subagent orchestration** — see Highlights ([#&#8203;85232](https://github.com/NousResearch/hermes-agent/pull/85232)); structured-output schemas on delegate\_task ([#&#8203;81144](https://github.com/NousResearch/hermes-agent/pull/81144)); batch-quality validation before spawning ([#&#8203;81141](https://github.com/NousResearch/hermes-agent/pull/81141)); truncation markers on capped children ([#&#8203;86641](https://github.com/NousResearch/hermes-agent/pull/86641)).
- **Kanban hardening** — collision-hotspot flagging ([#&#8203;83428](https://github.com/NousResearch/hermes-agent/pull/83428)), split-brain decision-ownership contract ([#&#8203;83424](https://github.com/NousResearch/hermes-agent/pull/83424)), memory-aware dispatch guard ([#&#8203;88115](https://github.com/NousResearch/hermes-agent/pull/88115)), notify/wake delivery modes ([#&#8203;85487](https://github.com/NousResearch/hermes-agent/pull/85487)).

##### 📊 Observability

- **Model/provider usage reporting** and bounded tool-metrics aggregation land as an observability subsystem ([#&#8203;68881](https://github.com/NousResearch/hermes-agent/pull/68881), [#&#8203;68882](https://github.com/NousResearch/hermes-agent/pull/68882) — [@&#8203;afourniernv](https://github.com/afourniernv)), with lifecycle ops bounded so a wedged pipeline can never block the agent ([#&#8203;83514](https://github.com/NousResearch/hermes-agent/pull/83514) — [@&#8203;victor-kyriazakos](https://github.com/victor-kyriazakos)).

##### 🔒 Security & Reliability

- **Protected instruction files** — writes to AGENTS.md/skills/memory always require approval ([#&#8203;81152](https://github.com/NousResearch/hermes-agent/pull/81152)).
- **Redaction sweep** — emission gaps closed across env-name variants, control-splits, process(list), checkpoints ([#&#8203;80965](https://github.com/NousResearch/hermes-agent/pull/80965)); `.env` reads redacted via file-read detection ([#&#8203;80964](https://github.com/NousResearch/hermes-agent/pull/80964)); terminal exception results + ACP stderr ([#&#8203;81675](https://github.com/NousResearch/hermes-agent/pull/81675), [#&#8203;81686](https://github.com/NousResearch/hermes-agent/pull/81686)); SSH target logging ([#&#8203;88232](https://github.com/NousResearch/hermes-agent/pull/88232)).
- **Windows approval coverage** — destructive Windows commands and paths now trip the approval system ([#&#8203;84428](https://github.com/NousResearch/hermes-agent/pull/84428)).
- **Supply-chain response** — the Blender MCP catalog entry and skill were removed after an upstream compromise ([#&#8203;83404](https://github.com/NousResearch/hermes-agent/pull/83404)); plugin installs get Tier-1 security scanning ([#&#8203;80728](https://github.com/NousResearch/hermes-agent/pull/80728)).
- **macOS TCC identity** — permission grants survive every update via `hermes desktop --setup-tcc-identity` ([#&#8203;95091](https://github.com/NousResearch/hermes-agent/pull/95091)).
- **PKCE cookie fix** — SameSite=None over HTTPS with a matching clear path ([#&#8203;83536](https://github.com/NousResearch/hermes-agent/pull/83536) — [@&#8203;benbarclay](https://github.com/benbarclay)).

##### 🏗️ Infrastructure, CI & Packaging

- **Real-OS CI** — macOS and Windows CI lanes with tests gated by real host OS ([#&#8203;77992](https://github.com/NousResearch/hermes-agent/pull/77992) — [@&#8203;ethernet8023](https://github.com/ethernet8023)); work lanes on 32-core runners ([#&#8203;92009](https://github.com/NousResearch/hermes-agent/pull/92009)); review comments + image builds moved out of the hot CI path ([#&#8203;82668](https://github.com/NousResearch/hermes-agent/pull/82668)).
- **Bootstrap installer** no longer waits on pipe EOF ([#&#8203;90941](https://github.com/NousResearch/hermes-agent/pull/90941) — [@&#8203;OutThisLife](https://github.com/OutThisLife)).

##### 🐛 Notable Bug Fixes

- Desktop session races (Stop→edit/resend, submit ownership) fixed as a cluster ([#&#8203;86594](https://github.com/NousResearch/hermes-agent/pull/86594)); workspace-pane idle flicker ([#&#8203;97513](https://github.com/NousResearch/hermes-agent/pull/97513)); assistant-ui boundary recovery ([#&#8203;81232](https://github.com/NousResearch/hermes-agent/pull/81232)).
- Kanban schema re-creation when a cached DB path loses it ([#&#8203;83619](https://github.com/NousResearch/hermes-agent/pull/83619) — [@&#8203;JoaoMarcos44](https://github.com/JoaoMarcos44)).
- Cron jobs no longer inherit a kanban worker's dispatcher identity ([#&#8203;79657](https://github.com/NousResearch/hermes-agent/pull/79657) — [@&#8203;kshitijk4poor](https://github.com/kshitijk4poor)); relay-fronted Slack cron delivery ([#&#8203;85340](https://github.com/NousResearch/hermes-agent/pull/85340) — [@&#8203;victor-kyriazakos](https://github.com/victor-kyriazakos)).
- Model-picker serves cached custom-provider catalogs on no-probe opens ([#&#8203;81973](https://github.com/NousResearch/hermes-agent/pull/81973) — [@&#8203;austinpickett](https://github.com/austinpickett)).
- Docker sandbox MEDIA attachments no longer silently drop ([#&#8203;94509](https://github.com/NousResearch/hermes-agent/pull/94509)); desktop binary attachments delivered into sandbox backends ([#&#8203;81717](https://github.com/NousResearch/hermes-agent/pull/81717)).
- Session-hygiene compaction cooldown escalates on repeat failures ([#&#8203;79741](https://github.com/NousResearch/hermes-agent/pull/79741) — [@&#8203;kshitijk4poor](https://github.com/kshitijk4poor)).
- Provider-injected parameter 400s retried instead of aborting the turn ([#&#8203;91643](https://github.com/NousResearch/hermes-agent/pull/91643)).
- …and roughly two thousand more closed issues' worth — this window averaged \~85 merged PRs per day.

##### ↩️ Reverted in this window (not shipping)

- **Model Council mode (/council)** — landed then reverted; not in this release.
- **DCP context engine** — landed then reverted; not in this release.
- **WS-only gateway server ([#&#8203;94245](https://github.com/NousResearch/hermes-agent/issues/94245))** — merged then reverted ([#&#8203;96118](https://github.com/NousResearch/hermes-agent/issues/96118)); FastAPI remains on the desktop boot path. The seq-stamped event replay ([#&#8203;94219](https://github.com/NousResearch/hermes-agent/issues/94219)) DID ship.
- Electron rolled back to 40.10.2; TCC interpreter anchor removed (superseded by the signing-identity approach that shipped).

##### 👥 Contributors

##### Core Team (Nous Research)

- **[@&#8203;teknium1](https://github.com/teknium1)** — release direction, Bot Mode, MCP command center, cron memory, and \~1,340 merged PRs
- **[@&#8203;kshitijk4poor](https://github.com/kshitijk4poor)** (374 PRs) — gateway delivery classes, session persistence, event replay, MoA/caching fixes
- **[@&#8203;OutThisLife](https://github.com/OutThisLife)** (209 PRs) — desktop architecture, Bot Mode UI, in-app browser, update hand-off
- **[@&#8203;ethernet8023](https://github.com/ethernet8023)** (38 PRs) — OS-gated CI lanes, clarify multi-question, tool cwd safety, aux structured-output resilience
- **[@&#8203;benbarclay](https://github.com/benbarclay)** (17 PRs) — relay voice STT, Slack link previews, PKCE
- **[@&#8203;victor-kyriazakos](https://github.com/victor-kyriazakos)** (15 PRs) — relay live cards, observability bounding
- **[@&#8203;rob-maron](https://github.com/rob-maron)**, **[@&#8203;austinpickett](https://github.com/austinpickett)**, **[@&#8203;jquesnelle](https://github.com/jquesnelle)**, **[@&#8203;shannonsands](https://github.com/shannonsands)** — providers, dashboard, model catalogs, and more

##### Top Community Contributors (by merged PR count)

- **[@&#8203;helix4u](https://github.com/helix4u)** (31 PRs) — wake-word capture, session UX, fix wave across desktop and gateway
- **[@&#8203;fangliquanflq](https://github.com/fangliquanflq)** (17 PRs) — stalled-provider recovery and agent-loop resilience
- **[@&#8203;bbednarski9](https://github.com/bbednarski9)** — relay native plugin integration; **[@&#8203;HexLab98](https://github.com/HexLab98)**, **[@&#8203;xxxigm](https://github.com/xxxigm)**, **[@&#8203;afourniernv](https://github.com/afourniernv)** (observability), **[@&#8203;liuhao1024](https://github.com/liuhao1024)**, **[@&#8203;Christopher-Schulze](https://github.com/Christopher-Schulze)**, **[@&#8203;Adolanium](https://github.com/Adolanium)**, **[@&#8203;webtecnica](https://github.com/webtecnica)**, **[@&#8203;smwbev](https://github.com/smwbev)** (cron Trigger-now), **[@&#8203;ctaylor86](https://github.com/ctaylor86)** (cron drift in Desktop), **[@&#8203;JoaoMarcos44](https://github.com/JoaoMarcos44)** (kanban schema recovery), **[@&#8203;jackulau](https://github.com/jackulau)** (SessionDB context manager), **[@&#8203;adikpb](https://github.com/adikpb)** (vision output caps), **[@&#8203;dokterdok](https://github.com/dokterdok)** (Bot Mode unification), and many more.

##### All Contributors

Huge thanks to every one of the 760+ people who contributed code, co-authored fixes, or had their work salvaged into this release:

[@&#8203;03farren](https://github.com/03farren), [@&#8203;0xarkstar](https://github.com/0xarkstar), [@&#8203;0xGr1mm](https://github.com/0xGr1mm), [@&#8203;0xWhiteMage](https://github.com/0xWhiteMage), [@&#8203;100yenadmin](https://github.com/100yenadmin), [@&#8203;1052326311](https://github.com/1052326311), [@&#8203;29206394](https://github.com/29206394), [@&#8203;2ndNatureAI](https://github.com/2ndNatureAI), [@&#8203;3Nya3](https://github.com/3Nya3),
[@&#8203;3x3xX3N0N](https://github.com/3x3xX3N0N), [@&#8203;404Dealer](https://github.com/404Dealer), [@&#8203;4adwentures](https://github.com/4adwentures), [@&#8203;5Hyeons](https://github.com/5Hyeons), [@&#8203;686f6c61](https://github.com/686f6c61), [@&#8203;69k4xmdfm2-blip](https://github.com/69k4xmdfm2-blip), [@&#8203;6ylqq](https://github.com/6ylqq), [@&#8203;75day](https://github.com/75day), [@&#8203;a-espinoza](https://github.com/a-espinoza),
[@&#8203;A-Snegin](https://github.com/A-Snegin), [@&#8203;a-yeyang](https://github.com/a-yeyang), [@&#8203;a0000001](https://github.com/a0000001), [@&#8203;A2chitect](https://github.com/A2chitect), [@&#8203;abitme](https://github.com/abitme), [@&#8203;abundantbeing](https://github.com/abundantbeing), [@&#8203;acewong7](https://github.com/acewong7), [@&#8203;acgh213](https://github.com/acgh213), [@&#8203;adamcap926](https://github.com/adamcap926),
[@&#8203;addelh](https://github.com/addelh), [@&#8203;adikpb](https://github.com/adikpb), [@&#8203;Adolanium](https://github.com/Adolanium), [@&#8203;adurham](https://github.com/adurham), [@&#8203;adybag14-cyber](https://github.com/adybag14-cyber), [@&#8203;afourniernv](https://github.com/afourniernv), [@&#8203;ag9920](https://github.com/ag9920), [@&#8203;ahmadalzaro1](https://github.com/ahmadalzaro1), [@&#8203;Ahmett101](https://github.com/Ahmett101),
[@&#8203;ai-ag2026](https://github.com/ai-ag2026), [@&#8203;AIalliAI](https://github.com/AIalliAI), [@&#8203;aider4ryder](https://github.com/aider4ryder), [@&#8203;Ailirag](https://github.com/Ailirag), [@&#8203;Aintworth](https://github.com/Aintworth), [@&#8203;airo7](https://github.com/airo7), [@&#8203;AiwendilInTheWoods](https://github.com/AiwendilInTheWoods), [@&#8203;akivavh](https://github.com/akivavh), [@&#8203;AL-ZiLLA](https://github.com/AL-ZiLLA),
[@&#8203;Al3xand3r1987](https://github.com/Al3xand3r1987), [@&#8203;albertodepaola](https://github.com/albertodepaola), [@&#8203;aldoeliacim](https://github.com/aldoeliacim), [@&#8203;aleksclark](https://github.com/aleksclark), [@&#8203;AlexanderPrendota](https://github.com/AlexanderPrendota), [@&#8203;alexdev03](https://github.com/alexdev03), [@&#8203;AlexFucuson9](https://github.com/AlexFucuson9),
[@&#8203;AlexGabbia](https://github.com/AlexGabbia), [@&#8203;AlexMnrs](https://github.com/AlexMnrs), [@&#8203;algf](https://github.com/algf), [@&#8203;Allecpu](https://github.com/Allecpu), [@&#8203;allin2](https://github.com/allin2), [@&#8203;alt-glitch](https://github.com/alt-glitch), [@&#8203;amanning3390](https://github.com/amanning3390), [@&#8203;andrexibiza](https://github.com/andrexibiza), [@&#8203;andyst-dev](https://github.com/andyst-dev),
[@&#8203;angel12](https://github.com/angel12), [@&#8203;angeon922-collab](https://github.com/angeon922-collab), [@&#8203;Angriff36](https://github.com/Angriff36), [@&#8203;aniruddhaadak80](https://github.com/aniruddhaadak80), [@&#8203;annguyenNous](https://github.com/annguyenNous), [@&#8203;anuvratrastogi](https://github.com/anuvratrastogi), [@&#8203;Aoshi-Dev](https://github.com/Aoshi-Dev),
[@&#8203;appletechie](https://github.com/appletechie), [@&#8203;arccat-114](https://github.com/arccat-114), [@&#8203;arcimun](https://github.com/arcimun), [@&#8203;ArthurFranckPat](https://github.com/ArthurFranckPat), [@&#8203;aryaxo](https://github.com/aryaxo), [@&#8203;asdasdadhj](https://github.com/asdasdadhj), [@&#8203;ashah360](https://github.com/ashah360), [@&#8203;AshuJoshi](https://github.com/AshuJoshi), [@&#8203;asimons81](https://github.com/asimons81),
[@&#8203;assimovt](https://github.com/assimovt), [@&#8203;austinpickett](https://github.com/austinpickett), [@&#8203;AVW7](https://github.com/AVW7), [@&#8203;Axmr1](https://github.com/Axmr1), [@&#8203;aydnOktay](https://github.com/aydnOktay), [@&#8203;ayushnangia](https://github.com/ayushnangia), [@&#8203;baihemax](https://github.com/baihemax), [@&#8203;bananawalnut](https://github.com/bananawalnut), [@&#8203;Bartok9](https://github.com/Bartok9),
[@&#8203;bashrusakh](https://github.com/bashrusakh), [@&#8203;bbednarski9](https://github.com/bbednarski9), [@&#8203;BearHuddleston](https://github.com/BearHuddleston), [@&#8203;benbarclay](https://github.com/benbarclay), [@&#8203;benfrank241](https://github.com/benfrank241), [@&#8203;beplee](https://github.com/beplee), [@&#8203;bgrablin](https://github.com/bgrablin), [@&#8203;bka9](https://github.com/bka9), [@&#8203;BkashJEE](https://github.com/BkashJEE),
[@&#8203;BlackishGreen33](https://github.com/BlackishGreen33), [@&#8203;BlakeB254](https://github.com/BlakeB254), [@&#8203;blunkjamie-dev](https://github.com/blunkjamie-dev), [@&#8203;BobClawblaw](https://github.com/BobClawblaw), [@&#8203;bradmarshall987](https://github.com/bradmarshall987), [@&#8203;brian717](https://github.com/brian717), [@&#8203;briandevans](https://github.com/briandevans),
[@&#8203;BrianFranco](https://github.com/BrianFranco), [@&#8203;BrinShadewater](https://github.com/BrinShadewater), [@&#8203;brucexu-eth](https://github.com/brucexu-eth), [@&#8203;BrunoBza](https://github.com/BrunoBza), [@&#8203;buffpesos](https://github.com/buffpesos), [@&#8203;burak33bb](https://github.com/burak33bb), [@&#8203;C-EXCITE-STUDIO](https://github.com/C-EXCITE-STUDIO), [@&#8203;c-pompa](https://github.com/c-pompa),
[@&#8203;cadezhou](https://github.com/cadezhou), [@&#8203;calvinnwq](https://github.com/calvinnwq), [@&#8203;capt-marbles](https://github.com/capt-marbles), [@&#8203;carbongotfound](https://github.com/carbongotfound), [@&#8203;carlotestor](https://github.com/carlotestor), [@&#8203;Carry00](https://github.com/Carry00), [@&#8203;cation98](https://github.com/cation98), [@&#8203;ccowan93](https://github.com/ccowan93),
[@&#8203;cedricziel](https://github.com/cedricziel), [@&#8203;cervantesh](https://github.com/cervantesh), [@&#8203;cfdude](https://github.com/cfdude), [@&#8203;Chadmc9889](https://github.com/Chadmc9889), [@&#8203;CharZhou](https://github.com/CharZhou), [@&#8203;chelsealong](https://github.com/chelsealong), [@&#8203;chesterXalan](https://github.com/chesterXalan), [@&#8203;chillerno1](https://github.com/chillerno1),
[@&#8203;Christopher-Schulze](https://github.com/Christopher-Schulze), [@&#8203;chukirk-svg](https://github.com/chukirk-svg), [@&#8203;cicav](https://github.com/cicav), [@&#8203;citizendev9c](https://github.com/citizendev9c), [@&#8203;cj52973](https://github.com/cj52973), [@&#8203;clarkvines](https://github.com/clarkvines), [@&#8203;ClintonEmok](https://github.com/ClintonEmok), [@&#8203;clyu168](https://github.com/clyu168),
[@&#8203;cmoiccool](https://github.com/cmoiccool), [@&#8203;codexbt](https://github.com/codexbt), [@&#8203;coe0718](https://github.com/coe0718), [@&#8203;Cossackx](https://github.com/Cossackx), [@&#8203;coygeek](https://github.com/coygeek), [@&#8203;crazyhulk](https://github.com/crazyhulk), [@&#8203;CrazyWillBear](https://github.com/CrazyWillBear), [@&#8203;criptogus](https://github.com/criptogus), [@&#8203;cryptoyasenka](https://github.com/cryptoyasenka),
[@&#8203;ctaylor86](https://github.com/ctaylor86), [@&#8203;cvillarroel2](https://github.com/cvillarroel2), [@&#8203;cxxCoolStar](https://github.com/cxxCoolStar), [@&#8203;cycorld](https://github.com/cycorld), [@&#8203;dagbs](https://github.com/dagbs), [@&#8203;damadorPL](https://github.com/damadorPL), [@&#8203;DanBennettUK](https://github.com/DanBennettUK), [@&#8203;DanDo385](https://github.com/DanDo385),
[@&#8203;DannyFengTianYu](https://github.com/DannyFengTianYu), [@&#8203;Dannyzen](https://github.com/Dannyzen), [@&#8203;danspicytaco](https://github.com/danspicytaco), [@&#8203;dante32683](https://github.com/dante32683), [@&#8203;darko-mesaros](https://github.com/darko-mesaros), [@&#8203;daromaj](https://github.com/daromaj), [@&#8203;david-bartos-phrase](https://github.com/david-bartos-phrase),
[@&#8203;davidgut1982](https://github.com/davidgut1982), [@&#8203;DavidMetcalfe](https://github.com/DavidMetcalfe), [@&#8203;davidneyravyr](https://github.com/davidneyravyr), [@&#8203;daxro](https://github.com/daxro), [@&#8203;dcdexhome](https://github.com/dcdexhome), [@&#8203;deacon-botdoctor](https://github.com/deacon-botdoctor), [@&#8203;deadczarvc](https://github.com/deadczarvc), [@&#8203;deaneeth](https://github.com/deaneeth),
[@&#8203;DECRUX9812](https://github.com/DECRUX9812), [@&#8203;deepeet-git](https://github.com/deepeet-git), [@&#8203;deniqlab](https://github.com/deniqlab), [@&#8203;DeseretSaint](https://github.com/DeseretSaint), [@&#8203;dhanesh](https://github.com/dhanesh), [@&#8203;Dhruv7201](https://github.com/Dhruv7201), [@&#8203;dhruvkej9](https://github.com/dhruvkej9), [@&#8203;digitalbase](https://github.com/digitalbase),
[@&#8203;DmytroVolodymyrson](https://github.com/DmytroVolodymyrson), [@&#8203;dokterdok](https://github.com/dokterdok), [@&#8203;Dolverin](https://github.com/Dolverin), [@&#8203;dombejar](https://github.com/dombejar), [@&#8203;doncazper](https://github.com/doncazper), [@&#8203;dougatbuck](https://github.com/dougatbuck), [@&#8203;douxy1994](https://github.com/douxy1994), [@&#8203;dpersek](https://github.com/dpersek), [@&#8203;dplush](https://github.com/dplush),
[@&#8203;Drexuxux](https://github.com/Drexuxux), [@&#8203;drissman](https://github.com/drissman), [@&#8203;dromai](https://github.com/dromai), [@&#8203;dtownsel](https://github.com/dtownsel), [@&#8203;duclucky](https://github.com/duclucky), [@&#8203;Dudeman456](https://github.com/Dudeman456), [@&#8203;Dusk1e](https://github.com/Dusk1e), [@&#8203;dvbaecker](https://github.com/dvbaecker), [@&#8203;e-macgregor](https://github.com/e-macgregor),
[@&#8203;EAbaracus](https://github.com/EAbaracus), [@&#8203;eaglezzz0522-cloud](https://github.com/eaglezzz0522-cloud), [@&#8203;Eapwrk](https://github.com/Eapwrk), [@&#8203;easyvibecoding](https://github.com/easyvibecoding), [@&#8203;echoes666](https://github.com/echoes666), [@&#8203;egilewski](https://github.com/egilewski), [@&#8203;ehz0ah](https://github.com/ehz0ah), [@&#8203;ekinnee](https://github.com/ekinnee), [@&#8203;ekzhang](https://github.com/ekzhang),
[@&#8203;elbukott1](https://github.com/elbukott1), [@&#8203;elisam0](https://github.com/elisam0), [@&#8203;elphamale](https://github.com/elphamale), [@&#8203;ElSnacko](https://github.com/ElSnacko), [@&#8203;embwl0x](https://github.com/embwl0x), [@&#8203;emozilla](https://github.com/emozilla), [@&#8203;EMT5320](https://github.com/EMT5320), [@&#8203;EndeavorYen](https://github.com/EndeavorYen), [@&#8203;Enough1122](https://github.com/Enough1122),
[@&#8203;enwaiax](https://github.com/enwaiax), [@&#8203;epeterpanz](https://github.com/epeterpanz), [@&#8203;EpicIsTheOne](https://github.com/EpicIsTheOne), [@&#8203;eric-senyao](https://github.com/eric-senyao), [@&#8203;ernst-bablick](https://github.com/ernst-bablick), [@&#8203;Eros-ITA](https://github.com/Eros-ITA), [@&#8203;erosika](https://github.com/erosika), [@&#8203;ethernet8023](https://github.com/ethernet8023),
[@&#8203;etzelvon](https://github.com/etzelvon), [@&#8203;EvanProgramming](https://github.com/EvanProgramming), [@&#8203;EvenXieWF](https://github.com/EvenXieWF), [@&#8203;explainanalyze](https://github.com/explainanalyze), [@&#8203;f-trycua](https://github.com/f-trycua), [@&#8203;fanfan343](https://github.com/fanfan343), [@&#8203;fangliquanflq](https://github.com/fangliquanflq), [@&#8203;fattchris](https://github.com/fattchris),
[@&#8203;felix-windsor](https://github.com/felix-windsor), [@&#8203;Finn763](https://github.com/Finn763), [@&#8203;flaviovargasbrandao](https://github.com/flaviovargasbrandao), [@&#8203;Fly-onlyone](https://github.com/Fly-onlyone), [@&#8203;flyingdoubleG](https://github.com/flyingdoubleG), [@&#8203;forkercat](https://github.com/forkercat),
[@&#8203;francialisomlimoeiro](https://github.com/francialisomlimoeiro), [@&#8203;francip](https://github.com/francip), [@&#8203;frankmendes1979](https://github.com/frankmendes1979), [@&#8203;fred0m](https://github.com/fred0m), [@&#8203;frendo](https://github.com/frendo), [@&#8203;frizikk](https://github.com/frizikk), [@&#8203;frohsinnllc](https://github.com/frohsinnllc), [@&#8203;Frowtek](https://github.com/Frowtek),
[@&#8203;fukutake1207](https://github.com/fukutake1207), [@&#8203;fyzanshaik](https://github.com/fyzanshaik), [@&#8203;GarlicGo](https://github.com/GarlicGo), [@&#8203;Gateton](https://github.com/Gateton), [@&#8203;georgell-ceo](https://github.com/georgell-ceo), [@&#8203;gfriesen1](https://github.com/gfriesen1), [@&#8203;gigabyte22](https://github.com/gigabyte22), [@&#8203;gigashad](https://github.com/gigashad), [@&#8203;gijoby](https://github.com/gijoby),
[@&#8203;gitong](https://github.com/gitong), [@&#8203;gkd2323c](https://github.com/gkd2323c), [@&#8203;gnanirahulnutakki](https://github.com/gnanirahulnutakki), [@&#8203;GodsBoy](https://github.com/GodsBoy), [@&#8203;gokay-ai](https://github.com/gokay-ai), [@&#8203;goktugvatandas](https://github.com/goktugvatandas), [@&#8203;golldyck](https://github.com/golldyck), [@&#8203;goodchang77](https://github.com/goodchang77), [@&#8203;GottZ](https://github.com/GottZ),
[@&#8203;grahfmusic](https://github.com/grahfmusic), [@&#8203;gregorustar-maker](https://github.com/gregorustar-maker), [@&#8203;greyvito](https://github.com/greyvito), [@&#8203;gsy324](https://github.com/gsy324), [@&#8203;guanla-zz](https://github.com/guanla-zz), [@&#8203;guilhermeartileshubsai](https://github.com/guilhermeartileshubsai), [@&#8203;guilhermeraiuga](https://github.com/guilhermeraiuga),
[@&#8203;h-mascot](https://github.com/h-mascot), [@&#8203;h8hawk](https://github.com/h8hawk), [@&#8203;Haakam21](https://github.com/Haakam21), [@&#8203;Haik-G](https://github.com/Haik-G), [@&#8203;halaprix](https://github.com/halaprix), [@&#8203;Halldrix](https://github.com/Halldrix), [@&#8203;handnewb](https://github.com/handnewb), [@&#8203;Hangzian](https://github.com/Hangzian), [@&#8203;hanhvs](https://github.com/hanhvs), [@&#8203;hansai-art](https://github.com/hansai-art),
[@&#8203;HAOWANG116](https://github.com/HAOWANG116), [@&#8203;HarishDarko](https://github.com/HarishDarko), [@&#8203;hbentel](https://github.com/hbentel), [@&#8203;helix4u](https://github.com/helix4u), [@&#8203;HenryGHJ](https://github.com/HenryGHJ), [@&#8203;hermias1](https://github.com/hermias1), [@&#8203;HexLab98](https://github.com/HexLab98), [@&#8203;hillimited](https://github.com/hillimited), [@&#8203;Hjharris1](https://github.com/Hjharris1),
[@&#8203;hkfiberlaser-svg](https://github.com/hkfiberlaser-svg), [@&#8203;honor2030](https://github.com/honor2030), [@&#8203;howdeploy](https://github.com/howdeploy), [@&#8203;hsearcy](https://github.com/hsearcy), [@&#8203;huklaa](https://github.com/huklaa), [@&#8203;hustwkr](https://github.com/hustwkr), [@&#8203;hutao562](https://github.com/hutao562), [@&#8203;hxwvaa](https://github.com/hxwvaa), [@&#8203;IAvecilla](https://github.com/IAvecilla),
[@&#8203;icemeng](https://github.com/icemeng), [@&#8203;infinitycrew39](https://github.com/infinitycrew39), [@&#8203;infocentr](https://github.com/infocentr), [@&#8203;InphinitiZ](https://github.com/InphinitiZ), [@&#8203;insane66613](https://github.com/insane66613), [@&#8203;Inspired-by-Atmosphere](https://github.com/Inspired-by-Atmosphere), [@&#8203;intelac](https://github.com/intelac),
[@&#8203;intellectronica](https://github.com/intellectronica), [@&#8203;isak-ialogics](https://github.com/isak-ialogics), [@&#8203;ishanparihar](https://github.com/ishanparihar), [@&#8203;isheng-eqi](https://github.com/isheng-eqi), [@&#8203;Ishman82](https://github.com/Ishman82), [@&#8203;iskysun96](https://github.com/iskysun96), [@&#8203;iso2kx](https://github.com/iso2kx), [@&#8203;itsflownium](https://github.com/itsflownium),
[@&#8203;izumi0uu](https://github.com/izumi0uu), [@&#8203;Jaaneek](https://github.com/Jaaneek), [@&#8203;Jackal991](https://github.com/Jackal991), [@&#8203;jackijianxa](https://github.com/jackijianxa), [@&#8203;jackoconner45](https://github.com/jackoconner45), [@&#8203;jackulau](https://github.com/jackulau), [@&#8203;jaimedhenriques](https://github.com/jaimedhenriques), [@&#8203;james47kjv](https://github.com/james47kjv),
[@&#8203;jbagdonas](https://github.com/jbagdonas), [@&#8203;jcjc81](https://github.com/jcjc81), [@&#8203;jdgg777](https://github.com/jdgg777), [@&#8203;jeeves-assistant](https://github.com/jeeves-assistant), [@&#8203;jeff-mettel](https://github.com/jeff-mettel), [@&#8203;Jefftree](https://github.com/Jefftree), [@&#8203;JElfferich](https://github.com/JElfferich), [@&#8203;jeremyrandria-debug](https://github.com/jeremyrandria-debug),
[@&#8203;JinUltimate1995](https://github.com/JinUltimate1995), [@&#8203;jirathip-k](https://github.com/jirathip-k), [@&#8203;jmmaloney4](https://github.com/jmmaloney4), [@&#8203;JoaoMarcos44](https://github.com/JoaoMarcos44), [@&#8203;joe-rodgers](https://github.com/joe-rodgers), [@&#8203;joe050860](https://github.com/joe050860), [@&#8203;John-Lussier](https://github.com/John-Lussier),
[@&#8203;Johnny-xuan](https://github.com/Johnny-xuan), [@&#8203;johnrazmus](https://github.com/johnrazmus), [@&#8203;johnsonAyo](https://github.com/johnsonAyo), [@&#8203;jonpol01](https://github.com/jonpol01), [@&#8203;JonthanaHanh](https://github.com/JonthanaHanh), [@&#8203;JoshPaulie](https://github.com/JoshPaulie), [@&#8203;Jreevo](https://github.com/Jreevo), [@&#8203;jtstothard](https://github.com/jtstothard),
[@&#8203;Julientalbot](https://github.com/Julientalbot), [@&#8203;justcarlosm](https://github.com/justcarlosm), [@&#8203;justinbowes](https://github.com/justinbowes), [@&#8203;justinjohnson25600](https://github.com/justinjohnson25600), [@&#8203;jwtor7](https://github.com/jwtor7), [@&#8203;k0rnacki](https://github.com/k0rnacki), [@&#8203;kadiratesdev](https://github.com/kadiratesdev),
[@&#8203;Kailigithub](https://github.com/Kailigithub), [@&#8203;kaishi00](https://github.com/kaishi00), [@&#8203;KarateWilly](https://github.com/KarateWilly), [@&#8203;kas-cor](https://github.com/kas-cor), [@&#8203;katie-lpd](https://github.com/katie-lpd), [@&#8203;Kavyrocom](https://github.com/Kavyrocom), [@&#8203;KBANTH](https://github.com/KBANTH), [@&#8203;kchernev](https://github.com/kchernev), [@&#8203;KeaneYan](https://github.com/KeaneYan),
[@&#8203;kernel-t1](https://github.com/kernel-t1), [@&#8203;KeroZelvin](https://github.com/KeroZelvin), [@&#8203;kerpopule](https://github.com/kerpopule), [@&#8203;KHALIDagara](https://github.com/KHALIDagara), [@&#8203;KhanCold](https://github.com/KhanCold), [@&#8203;khanhngoo](https://github.com/khanhngoo), [@&#8203;KIAgent01](https://github.com/KIAgent01), [@&#8203;kim-miram](https://github.com/kim-miram), [@&#8203;kimyxx](https://github.com/kimyxx),
[@&#8203;Kinkoolino-Hermes](https://github.com/Kinkoolino-Hermes), [@&#8203;kinsolee](https://github.com/kinsolee), [@&#8203;kitsonk](https://github.com/kitsonk), [@&#8203;klaus765](https://github.com/klaus765), [@&#8203;koltyj](https://github.com/koltyj), [@&#8203;konsisumer](https://github.com/konsisumer), [@&#8203;kronexoi](https://github.com/kronexoi), [@&#8203;krunkosaurus](https://github.com/krunkosaurus),
[@&#8203;kshitijk4poor](https://github.com/kshitijk4poor), [@&#8203;kudapara](https://github.com/kudapara), [@&#8203;kvnloo](https://github.com/kvnloo), [@&#8203;kweiner](https://github.com/kweiner), [@&#8203;kyssta-exe](https://github.com/kyssta-exe), [@&#8203;Kyzcreig](https://github.com/Kyzcreig), [@&#8203;laithrw](https://github.com/laithrw), [@&#8203;lakshyaag-tavily](https://github.com/lakshyaag-tavily), [@&#8203;landaun](https://github.com/landaun),
[@&#8203;laulopezreal](https://github.com/laulopezreal), [@&#8203;laviesony](https://github.com/laviesony), [@&#8203;lazy-idler](https://github.com/lazy-idler), [@&#8203;LBeghini](https://github.com/LBeghini), [@&#8203;leeclouddragon](https://github.com/leeclouddragon), [@&#8203;Leegenux](https://github.com/Leegenux), [@&#8203;LemonSchneid](https://github.com/LemonSchneid), [@&#8203;LeonardoLGDS](https://github.com/LeonardoLGDS),
[@&#8203;leonphull](https://github.com/leonphull), [@&#8203;LeonSGP43](https://github.com/LeonSGP43), [@&#8203;lepetitprince716-prog](https://github.com/lepetitprince716-prog), [@&#8203;Lesnak1](https://github.com/Lesnak1), [@&#8203;lesterlxt](https://github.com/lesterlxt), [@&#8203;lesyuk](https://github.com/lesyuk), [@&#8203;lEWFkRAD](https://github.com/lEWFkRAD), [@&#8203;lextiz](https://github.com/lextiz), [@&#8203;lgy1027](https://github.com/lgy1027),
[@&#8203;Lidang-Jiang](https://github.com/Lidang-Jiang), [@&#8203;lilShawtty-byte](https://github.com/lilShawtty-byte), [@&#8203;lin-hongkuan](https://github.com/lin-hongkuan), [@&#8203;liuhao1024](https://github.com/liuhao1024), [@&#8203;liusencomic-cyber](https://github.com/liusencomic-cyber), [@&#8203;lkz-de](https://github.com/lkz-de), [@&#8203;loafoe](https://github.com/loafoe), [@&#8203;locker95](https://github.com/locker95),
[@&#8203;LordMelkor](https://github.com/LordMelkor), [@&#8203;lorzl](https://github.com/lorzl), [@&#8203;lost9999](https://github.com/lost9999), [@&#8203;loulanyue](https://github.com/loulanyue), [@&#8203;LovePlayCode](https://github.com/LovePlayCode), [@&#8203;luckygreen](https://github.com/luckygreen), [@&#8203;lukeroberts](https://github.com/lukeroberts), [@&#8203;luoxiao6645](https://github.com/luoxiao6645), [@&#8203;luxles](https://github.com/luxles),
[@&#8203;m1k3s0](https://github.com/m1k3s0), [@&#8203;Mabolla](https://github.com/Mabolla), [@&#8203;MagMueller](https://github.com/MagMueller), [@&#8203;magnus919](https://github.com/magnus919), [@&#8203;magnuslundstedt](https://github.com/magnuslundstedt), [@&#8203;MaheshBhushan](https://github.com/MaheshBhushan), [@&#8203;MarcoFernstaedt](https://github.com/MarcoFernstaedt), [@&#8203;mariobgsp](https://github.com/mariobgsp),
[@&#8203;marketing2981](https://github.com/marketing2981), [@&#8203;markmcd](https://github.com/markmcd), [@&#8203;markmnl](https://github.com/markmnl), [@&#8203;MarkVLK](https://github.com/MarkVLK), [@&#8203;marzukia](https://github.com/marzukia), [@&#8203;Mat-London](https://github.com/Mat-London), [@&#8203;matsvarn](https://github.com/matsvarn), [@&#8203;mattprusak](https://github.com/mattprusak), [@&#8203;MaximCrabbe](https://github.com/MaximCrabbe),
[@&#8203;maxmilian](https://github.com/maxmilian), [@&#8203;mehmetkr-31](https://github.com/mehmetkr-31), [@&#8203;Mengchee118](https://github.com/Mengchee118), [@&#8203;menhguin](https://github.com/menhguin), [@&#8203;metamindedu](https://github.com/metamindedu), [@&#8203;michaelHMK](https://github.com/michaelHMK), [@&#8203;michaelsam94](https://github.com/michaelsam94), [@&#8203;milnerrad](https://github.com/milnerrad),
[@&#8203;MindDragonLabs](https://github.com/MindDragonLabs), [@&#8203;misterdas](https://github.com/misterdas), [@&#8203;mjolley9](https://github.com/mjolley9), [@&#8203;mmcallister8](https://github.com/mmcallister8), [@&#8203;mmcclean-aws](https://github.com/mmcclean-aws), [@&#8203;mmchuangyt-ai](https://github.com/mmchuangyt-ai), [@&#8203;moisesvalero](https://github.com/moisesvalero), [@&#8203;mollusk](https://github.com/mollusk),
[@&#8203;monerostar](https://github.com/monerostar), [@&#8203;Morad37](https://github.com/Morad37), [@&#8203;mrkillbob](https://github.com/mrkillbob), [@&#8203;mrmixx-max](https://github.com/mrmixx-max), [@&#8203;mrsucesso](https://github.com/mrsucesso), [@&#8203;MrTheSoulz](https://github.com/MrTheSoulz), [@&#8203;MustafaK99](https://github.com/MustafaK99), [@&#8203;myk0la-b](https://github.com/myk0la-b), [@&#8203;mzkarami](https://github.com/mzkarami),
[@&#8203;n-leezy](https://github.com/n-leezy), [@&#8203;n1majne3](https://github.com/n1majne3), [@&#8203;NaMinhyeok](https://github.com/NaMinhyeok), [@&#8203;nanami7777777](https://github.com/nanami7777777), [@&#8203;nankingjing](https://github.com/nankingjing), [@&#8203;natebransc](https://github.com/natebransc), [@&#8203;nateEc](https://github.com/nateEc), [@&#8203;Navlem](https://github.com/Navlem), [@&#8203;nbxuhk](https://github.com/nbxuhk),
[@&#8203;nductien](https://github.com/nductien), [@&#8203;Ne0teric](https://github.com/Ne0teric), [@&#8203;NealZhouPanda](https://github.com/NealZhouPanda), [@&#8203;necoweb3](https://github.com/necoweb3), [@&#8203;negroni334](https://github.com/negroni334), [@&#8203;nftpoetrist](https://github.com/nftpoetrist), [@&#8203;nicochase](https://github.com/nicochase), [@&#8203;Nicolas-Formenton](https://github.com/Nicolas-Formenton),
[@&#8203;nicolasdmolina](https://github.com/nicolasdmolina), [@&#8203;nikitaBarkov](https://github.com/nikitaBarkov), [@&#8203;NikolaRHristov](https://github.com/NikolaRHristov), [@&#8203;noahingh](https://github.com/noahingh), [@&#8203;nolanchic](https://github.com/nolanchic), [@&#8203;NorethSea](https://github.com/NorethSea), [@&#8203;notkisk](https://github.com/notkisk), [@&#8203;notwitcheer](https://github.com/notwitcheer),
[@&#8203;NousResearch](https://github.com/NousResearch), [@&#8203;null-runner](https://github.com/null-runner), [@&#8203;ojassharma7](https://github.com/ojassharma7), [@&#8203;oliver-mee](https://github.com/oliver-mee), [@&#8203;olympusbuildz](https://github.com/olympusbuildz), [@&#8203;OmarB97](https://github.com/OmarB97), [@&#8203;ooiuuii](https://github.com/ooiuuii), [@&#8203;openclaww-xz](https://github.com/openclaww-xz),
[@&#8203;opti-josh-holt](https://github.com/opti-josh-holt), [@&#8203;osgeek90](https://github.com/osgeek90), [@&#8203;ousiaresearch](https://github.com/ousiaresearch), [@&#8203;OutThisLife](https://github.com/OutThisLife), [@&#8203;Owen-narcissus](https://github.com/Owen-narcissus), [@&#8203;paoloantinori](https://github.com/paoloantinori), [@&#8203;Parker-Fawcett](https://github.com/Parker-Fawcett),
[@&#8203;pasevin](https://github.com/pasevin), [@&#8203;pasmud](https://github.com/pasmud), [@&#8203;PaulBlackSwan](https://github.com/PaulBlackSwan), [@&#8203;paultaki](https://github.com/paultaki), [@&#8203;peetteerr](https://github.com/peetteerr), [@&#8203;pefontana](https://github.com/pefontana), [@&#8203;Per0-1](https://github.com/Per0-1), [@&#8203;pierrenode](https://github.com/pierrenode), [@&#8203;PINKIIILQWQ](https://github.com/PINKIIILQWQ),
[@&#8203;pittosporum-seu](https://github.com/pittosporum-seu), [@&#8203;pju-hoge](https://github.com/pju-hoge), [@&#8203;plcunha](https://github.com/plcunha), [@&#8203;Pluviobyte](https://github.com/Pluviobyte), [@&#8203;pmos69](https://github.com/pmos69), [@&#8203;pnascimento9596](https://github.com/pnascimento9596), [@&#8203;poisdahl](https://github.com/poisdahl), [@&#8203;potatosalad](https://github.com/potatosalad),
[@&#8203;prashantjain25](https://github.com/prashantjain25), [@&#8203;PRATHAMESH75](https://github.com/PRATHAMESH75), [@&#8203;professorpalmer](https://github.com/professorpalmer), [@&#8203;projetsjsl](https://github.com/projetsjsl), [@&#8203;protas-box](https://github.com/protas-box), [@&#8203;qazasdsdqaza](https://github.com/qazasdsdqaza), [@&#8203;QDung210](https://github.com/QDung210),
[@&#8203;qixuancao](https://github.com/qixuancao), [@&#8203;QuarkAssistant](https://github.com/QuarkAssistant), [@&#8203;quocanh261997](https://github.com/quocanh261997), [@&#8203;ragingbulld](https://github.com/ragingbulld), [@&#8203;rainbowgore](https://github.com/rainbowgore), [@&#8203;rapsealk](https://github.com/rapsealk), [@&#8203;Raven26-VooDoo](https://github.com/Raven26-VooDoo),
[@&#8203;RaviTharuma](https://github.com/RaviTharuma), [@&#8203;RayCharlizard](https://github.com/RayCharlizard), [@&#8203;razultull](https://github.com/razultull), [@&#8203;re-ITRT](https://github.com/re-ITRT), [@&#8203;Reksely](https://github.com/Reksely), [@&#8203;RelaxJonh](https://github.com/RelaxJonh), [@&#8203;repfigit](https://github.com/repfigit), [@&#8203;RGerrish](https://github.com/RGerrish), [@&#8203;RibatTRW](https://github.com/RibatTRW),
[@&#8203;RichardGuan1](https://github.com/RichardGuan1), [@&#8203;RichardHojunJang](https://github.com/RichardHojunJang), [@&#8203;richardhowes](https://github.com/richardhowes), [@&#8203;RickyYii](https://github.com/RickyYii), [@&#8203;rikkarth](https://github.com/rikkarth), [@&#8203;rille111](https://github.com/rille111), [@&#8203;Ringo6107](https://github.com/Ringo6107), [@&#8203;rjhilgefort](https://github.com/rjhilgefort),
[@&#8203;rjvandeve](https://github.com/rjvandeve), [@&#8203;rkfshakti](https://github.com/rkfshakti), [@&#8203;rlaope](https://github.com/rlaope), [@&#8203;Rmohid](https://github.com/Rmohid), [@&#8203;rob-maron](https://github.com/rob-maron), [@&#8203;rodrigogs](https://github.com/rodrigogs), [@&#8203;royalaid](https://github.com/royalaid), [@&#8203;royzhrxy-glitch](https://github.com/royzhrxy-glitch), [@&#8203;rroverin](https://github.com/rroverin),
[@&#8203;rshi0212](https://github.com/rshi0212), [@&#8203;rsk-731](https://github.com/rsk-731), [@&#8203;rtcopenclawgh](https://github.com/rtcopenclawgh), [@&#8203;ruangraung](https://github.com/ruangraung), [@&#8203;rudrakshchahal](https://github.com/rudrakshchahal), [@&#8203;ruochu88s](https://github.com/ruochu88s), [@&#8203;rweddle](https://github.com/rweddle), [@&#8203;ryankhart](https://github.com/ryankhart), [@&#8203;S-Claw](https://github.com/S-Claw),
[@&#8203;Sahil-SS9](https://github.com/Sahil-SS9), [@&#8203;salch-cred](https://github.com/salch-cred), [@&#8203;sam7894604](https://github.com/sam7894604), [@&#8203;samclams](https://github.com/samclams), [@&#8203;saralilyb](https://github.com/saralilyb), [@&#8203;sashmatash](https://github.com/sashmatash), [@&#8203;sasquatch9818](https://github.com/sasquatch9818), [@&#8203;satotakumi](https://github.com/satotakumi),
[@&#8203;ScaleLeanChris](https://github.com/ScaleLeanChris), [@&#8203;SeashoreShi](https://github.com/SeashoreShi), [@&#8203;serefyarar](https://github.com…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend/local Local shell execution P2 Medium — degraded but workaround exists sweeper:risk-session-state Sweeper risk: may lose/corrupt/mis-associate session or context state tool/terminal Terminal execution and process management type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: An interrupted command adopts another session's working directory

3 participants