contribution/compass
NousResearch/hermes-agent

Hermes Agent

411 signals · 364 observation events

Open repository ↗

The agent that grows with you

230.0K stars45.5K forksPythonMITaiai-agentai-agentsanthropicchatgptclaudeclaude-codecodexkeyword: Hermes Agent
PROJECT NEWS

Release, roadmap, and discussion

All news →
NousResearch/hermes-agent

Hermes Agent

Coding-Agent Infrastructure
Latest stable

Hermes Agent v0.20.0 (2026.8.3)

v2026.8.3
  • ✨ Highlights
  • Talk to Hermes — streaming, conversational voice with barge-in — Voice mode used to mean: speak, wait for the whole reply to generate, then listen to one long audio file. Now Hermes speaks clause-by-clause as the response streams, you can i
  • Wake words and hands-free control — Say your own open-vocabulary wake phrase ("hey Hermes", or anything you pick) and Hermes starts listening — detection runs on-device, so no audio leaves your machine while it waits. Multi-profile voice ro
  • Voice on every platform — Send a voice note to Hermes on WhatsApp, Feishu, DingTalk, LINE, QQ, Photon, or Weixin and it's transcribed and answered; auto-TTS replies are delivered platform-aware (opus where platforms want opus, captions atta
  • Research you can trust — grounded citations with fact-checking — The new grounded-citations skill makes Hermes produce research where every claim is backed by a verifiable source: quotes are matched against the actual page text (not halluci
Original release notes ↗

Publicly indicated next

  • No public prerelease or open milestone found.

Prereleases and milestones indicate public plans; they are not delivery commitments.

Observation trail

  1. changedupdatedAt, state
  2. discoveredinitial snapshot
  3. changedupdatedAt, metrics
  4. changedupdatedAt, state
  5. changedupdatedAt, metrics
  6. discoveredinitial snapshot
  7. changedupdatedAt, labels
  8. changedupdatedAt, labels, state
  9. changedupdatedAt, labels
  10. changedupdatedAt, labels
  11. changedupdatedAt, metrics
  12. changedupdatedAt, labels
  13. discoveredinitial snapshot
  14. discoveredinitial snapshot
  15. discoveredinitial snapshot
  16. discoveredinitial snapshot
  17. changedtext, updatedAt, metrics
  18. changedupdatedAt
  19. discoveredinitial snapshot
  20. discoveredinitial snapshot
  21. discoveredinitial snapshot
  22. discoveredinitial snapshot
  23. changedupdatedAt, metrics
  24. changedtext, updatedAt
  25. discoveredinitial snapshot
  26. discoveredinitial snapshot
  27. discoveredinitial snapshot
  28. discoveredinitial snapshot
  29. changedupdatedAt, metrics, labels
  30. discoveredinitial snapshot
50 shown
pull request

fix(sanitize): drop tool_calls key when dedup removes all calls

## What does this PR do? Fixes an HTTP 400 error from DeepSeek v4 and newer OpenAI providers when `sanitize_api_messages()` produces an empty `tool_calls: []` array after deduplicating all tool_calls in a message. The dedup pass introduced by #58327 removes duplicate `tool_call_id`s to comply with provider requirements. However, when ALL tool_calls in a mess

importance 3@liuhao1024opentype/bugcomp/agentprovider/deepseekP2sweeper:risk-session-stateOriginal evidence ↗
pull request

feat(api): resolve configured session identities early

## Summary Resolve configured API session-key aliases into canonical native-platform identities before agent construction. This lets API-originated turns use the same platform identity, toolset selection, prompt context, and session namespace as the configured Telegram or Discord destination without trusting caller-supplied routing fields. ## Behavior - Load

importance 3@rungmc357type/featurecomp/gatewayarea/configP3sweeper:risk-session-stateOriginal evidence ↗
pull request

anthropic_prompt_cache_policy: missing positional agent parameter

When the positional `agent` parameter is removed from `agent/agent_runtime_helpers.py::anthropic_prompt_cache_policy`, all call sites that pass `agent` positionally raise at runtime: - `agent/moa_loop.py:247` (positional) - `agent/agent_runtime_helpers.py` (recursive call) - `run_agent.py::_anthropic_prompt_cache_policy` (forwarder) This was traced from a us

importance 3@kuehnbergertype/testcomp/agentP3sweeper:blast-containedOriginal evidence ↗
pull request

feat(openai): configure Responses verbosity

## What does this PR do? Adds first-class `agent.text_verbosity` configuration for OpenAI Responses requests. Valid values are `low`, `medium`, and `high`; empty, unset, or malformed values preserve the provider default. The setting is emitted as top-level `text.verbosity` only for supported GPT-5 requests through Codex OAuth or the exact `api.openai.com` ho

importance 3@Diaspar4uopentype/featurecomp/agentcomp/clicomp/gatewayprovider/openaiOriginal evidence ↗
pull request

feat(hindsight): memory provider improvements — recall_sync, retain_source, setup templates, memory indicators, error hints

Bundles previously-separate Hindsight/memory PRs into a single review surface. Each was independently mergeable; combining them avoids parallel reviews of the same file (`plugins/memory/hindsight/__init__.py`, which most of them touch). ## What's included | Supersedes | Change | Fixes | |---|---|---| | #70278 | **Opt-in synchronous recall** for the current t

importance 3@benfrank241closedtype/featurecomp/agentcomp/clicomp/pluginstool/memoryOriginal evidence ↗
pull request

fix(slack): read real SDK responses instead of gating on isinstance dict

## What does this PR do? Slack user names, channel names and bot detection are silently broken on `main`: the agent receives `[U0BCE4NRVKN | Slack user <@U0BCE4NRVKN>]` instead of `[Nikita | Slack user <@U0BCE4NRVKN>]`, every user resolves as a non-bot, and some send paths report success as failure. **Root cause.** `slack_sdk` Web API calls return `SlackResp

importance 3@nikitaBarkovclosedtype/bugcomp/pluginsplatform/slackP3sweeper:risk-message-deliveryOriginal evidence ↗
pull request

fix(buzz): discover newly joined channels dynamically

## What does this PR do? Fixes two gaps in Buzz channel discovery: 1. When no explicit channel allowlist is configured, startup now lists only channels where the agent is a member. 2. A WebSocket membership event now discovers and subscribes to newly joined ordinary channels, not only new DM conversations. An explicit `BUZZ_CHANNELS` configuration remains a

importance 3@cmykopentype/bugcomp/pluginsP3needs-decisionsweeper:risk-message-deliveryOriginal evidence ↗
pull request

fix(cli): override MiniMax API-key overlay to Anthropic endpoint

## What does this PR do? The MiniMax **API-key** overlay advertises `anthropic_messages` but had no `base_url_override`. `get_provider()` therefore kept the models.dev OpenAI-style URL (`https://api.minimax.io/v1`). Worse, `hermes setup` persists that `/v1` URL into `model.base_url`, and the runtime pool path treated it as an explicit override of the registr

importance 3@Christopher-Schulzeopentype/bugcomp/cliprovider/minimaxP3Original evidence ↗
pull request

fix(plugins): keep lifecycle hooks aligned across session rotation surfaces

## What does this PR do? This fixes lifecycle plugin hooks that received different session transition and workspace payloads depending on whether `/new` ran through the CLI, TUI, or messaging gateway. Without this fix, plugins cannot reliably release old-session resources, initialize the replacement session, or associate model turns with the authoritative ta

importance 3@fangliquanflqopentype/bugcomp/agentcomp/clicomp/gatewaycomp/tuiOriginal evidence ↗
pull request

fix(cua): make governed capture failures explicit

## What changed - Add an explicit failed capture result with `ok:false`, `success:false`, `status:"failed"`, a bounded error code/phase/repair hint, and target-presence metadata. - Preserve that contract through addon pre-tool governance blocks instead of returning a generic error string. - Reject half-pairs and invalid native capture targets explicitly; kee

importance 3@leonagenteopentype/bugcomp/agentcomp/toolsP2Original evidence ↗
pull request

fix(memory): auto-install hindsight-all for local_embedded mode

## What does this PR do? Fixes a crash when users select `local_embedded` mode via `hermes memory setup`. The setup wizard tries to install `hindsight-all` but the install can silently fail because `capture_output=True` swallows errors. Since `plugin.yaml` only declares `hindsight-client>=0.4.22` as a dependency, hermes startup validation passes even when `h

importance 2@LehaoLinclosedtype/bugcomp/pluginstool/memoryP2sweeper:risk-compatibilityOriginal evidence ↗
pull request

fix(langfuse): include Anthropic system prompt in generation input

## Summary When using Anthropic (and other providers that split `system` out of `messages`), Langfuse **LLM call** generation observations only showed user/assistant turns — the Hermes system prompt (skills, memory, context) was missing from the trace input. This change: - Passes `system_prompt` from `api_kwargs["system"]` (with fallback when the first messa

importance 2@db-aeonclosedtype/bugcomp/agentcomp/pluginsprovider/anthropicP3Original evidence ↗
pull request

fix(langfuse): guard _get_langfuse() against concurrent-init TOCTOU

## Summary `_get_langfuse()` holds a global `_LANGFUSE_CLIENT` variable with no lock protecting the double-check initialization. Two concurrent first callers (e.g. two gateway sessions both triggering a Langfuse hook at the same time) both pass the `_LANGFUSE_CLIENT is not None` guard, both construct a `Langfuse(**kwargs)` client, and the loser's client leak

importance 2@nftpoetristclosedtype/bugcomp/pluginsP3telemetrysweeper:blast-containedOriginal evidence ↗
pull request

fix(desktop): render reasoning effort as a distinct badge in the model menu (#51833)

## Summary The desktop model dropdown no longer makes a model look duplicated when a reasoning effort is set. The effort (and "Fast") now renders as a distinct badge chip beside the model name instead of plain grey text appended to it. Fixes #51833. **Root cause:** in `model-menu-panel.tsx` each row built a single `meta` string (`Fast High`, `Med`, …) and re

importance 2@PRATHAMESH75closedtype/bugduplicateP3sweeper:blast-moderatecomp/desktopOriginal evidence ↗
pull request

fix(update): honor configured bootstrap state

## What does this PR do? Update/bootstrap orchestration now respects existing configuration before running heavyweight browser dependency installs or interactive setup stages. ## Related Issue ## Type of Change - [x] 🐛 Bug fix (non-breaking change that fixes an issue) - [ ] ✨ New feature (non-breaking change that adds functionality) - [ ] 🔒 Security fix - [

importance 2@konsisumeropentype/bugcomp/cliarea/configP3sweeper:risk-compatibilityOriginal evidence ↗
pull request

fix(delegate): surface child's resolved toolsets in async completion block (#63887)

## What does this PR do? Async delegation records each subagent's full task source (goal, context, role, model) in the completion block that re-enters the parent conversation — but **not the toolsets the child actually held** after parent-intersection and blocked-tool stripping. Because of that, when a delegation goal structurally requires a toolset the chil

importance 2@PRATHAMESH75opentype/bugcomp/agenttool/delegateP2sweeper:risk-session-stateOriginal evidence ↗
pull request

fix(langfuse): export canonical generation total

## What does this PR do? Fixes Langfuse generation/trace/session cost rollups when Hermes exports cache or other custom cost buckets. The bug was reproduced on unchanged `main` at `d2c81eb681dea1382fbd1ed403f58320d5aef575`; the branch is now rebased onto current `main` at `9baa7d4673ce89f09378daa3660530f8bf142708`. Hermes already computes the right request-l

importance 2@NaMinhyeokclosedtype/bugcomp/pluginsP3telemetrysweeper:risk-compatibilityOriginal evidence ↗
pull request

fix(agent): default context lookup for empty model IDs

## Summary This is the focused current-main replacement for the unique safety fix in #26873. `get_model_context_length()` can be called while a runtime/model selection is still empty. Before this guard, an empty or `None` model flowed into provider-prefix normalization and then into cache/probe logic. Return the documented 256K fallback immediately instead.

importance 2@whirmillclosedtype/bugcomp/agentP2sweeper:risk-compatibilitysweeper:blast-containedOriginal evidence ↗
pull request

fix(cli): run -w/--worktree in one-shot mode instead of silently ignoring it (#67458)

## What does this PR do? `hermes -z "…" -w` accepts `-w/--worktree` but silently ignores it. One-shot mode had no worktree lifecycle — `run_oneshot` (`hermes_cli/oneshot.py`) never set one up, and both `-z` dispatch sites in `hermes_cli/main.py` forwarded neither the flag nor any isolation. So the agent runs in the caller's cwd and its commits land on the ch

importance 2@PRATHAMESH75opentype/bugduplicatecomp/cliP2sweeper:risk-compatibilityOriginal evidence ↗
pull request

fix(honcho): sync config (supersedes #33440)

Running gateways could keep cached Honcho managers and SDK clients after construction-frozen settings changed, while active session peers retained prior observation settings. This change: - fingerprints every resolved Honcho setting frozen into the gateway agent/provider/manager; - fingerprints secrets without storing raw key material in cache signatures; -

importance 2@Diaspar4uopentype/bugcomp/gatewaycomp/pluginstool/memoryP3Original evidence ↗
pull request

fix(kanban): preserve chat_type and delivery_metadata in subscription inheritance (#73030)

## Problem `_inherit_notify_subs()` in `hermes_cli/kanban_db.py` copies a parent task's notification subscription to a child via `INSERT … SELECT`, but omits the `chat_type` and `delivery_metadata` columns. Inherited child rows silently lose available routing metadata. This affects all three call paths that route through the helper: `create_task(parents=…)`,

importance 2@Tranquil-Flowclosedtype/bugcomp/cronplatform/telegramP3sweeper:risk-session-stateOriginal evidence ↗
pull request

fix: detect progress narration as final answer and retry turn

Fixes #74604 The agent can end a turn by emitting a progress narration (e.g. 'I am now compiling the complete answer.') as its final assistant message, producing no deliverable. No bound was reached, nothing errored, and no hook exists to catch this. Work in progress — root cause analysis and fix coming in the next commit.

importance 2@rkfshaktiopeninvalidcomp/agentP3sweeper:blast-containedOriginal evidence ↗
pull request

feat(usage,security): desktop usage & cost surface + Safety & Security panel

<!-- native-links:v1 --> Related #77221 #77222 #77223 #77262 ## What changed and why This PR turns Hermes' existing local usage accounting and security controls into first-class desktop surfaces. ### 1. Usage observability (`/usage`) The desktop now provides three distinct Usage decks: - **Overview** — profile/session telemetry from `usage.overview`: session

importance 2@andrexibizaopentype/featurecomp/agentcomp/tuiP3comp/desktopOriginal evidence ↗
pull request

fix(desktop): eliminate sidebar scroll jitter during dynamic sizing

## What does this PR do? Stops the Desktop sessions sidebar from jumping/flickering while you scroll a long virtualized list. Native scroll anchoring was fighting the virtualizer’s padding updates, and date-divider rows were estimated at the session-row height. Rebased onto current `main` so inbox-style card rows keep the 66px estimate. A naive replay of the

importance 2@StanleyStetsonopentype/bugP2comp/desktopOriginal evidence ↗
pull request

fix(cron): guard against PyPI utils package shadowing local utils.py

## Problem When the PyPI `utils` package is installed in the same venv (common in the webui Docker setup), `from utils import atomic_write_text` in `cron/jobs.py` and `from utils import atomic_replace` in `cron/suggestions.py` resolve to the PyPI package instead of the local `utils.py`, causing: ``` ImportError: cannot import name 'atomic_write_text' from 'u

importance 2@blut-agenttype/bugcomp/cronbackend/dockerP2sweeper:risk-compatibilityOriginal evidence ↗
pull request

fix(telegram): hold inbound messages across disconnect instead of destroying them

## Summary Current main's disconnect drop-guard (#55971) correctly refuses to dispatch buffered Telegram updates into a torn-down session (`_should_drop_delayed_delivery` / `_drop_delayed_deliveries`). The implementation still **destroys** the inbound event: debug-level `return` after `pop()` (or before enqueue) at the text/photo/media-group batch sites, and

importance 2@dvbaeckeropentype/bugcomp/pluginsplatform/telegramP1sweeper:risk-message-deliveryOriginal evidence ↗
pull request

fix(xai): drop stale 256K grok-4.6 context cache

## Summary Official card ([docs.x.ai/developers/models/grok-4.6](https://docs.x.ai/developers/models/grok-4.6)): **500,000** context. [#84661](https://github.com/NousResearch/hermes-agent/pull/84661) landed the catalog. `main` already lists native `grok-4.6` on the xAI picker. This PR is **only** the leftover cache guard. Pre-catalog builds resolved `grok-4.

importance 2@Julientalbotclosedtype/bugcomp/agentcomp/cliprovider/xaiP2Original evidence ↗
pull request

fix(hindsight): add local_embedded mode and full local-mode fields to config schema

## Problem The desktop Memory & context panel for Hindsight (issue #84572) only declares `cloud` and `local_external` modes, so Hindsight instances configured in `local_embedded` mode display incorrect cloud defaults: - **Mode** shows Cloud (fallback from invalid `local_embedded` value) - **API URL** shows the cloud default (the actual value is silently coer

importance 2@blut-agentopentype/bugcomp/clicomp/pluginstool/memoryP3Original evidence ↗
pull request

feat(desktop): add 'Add as context' right-click to message blocks and file explorer

## What does this PR do? Adds right-click "Add as context" to both message blocks (selected text) and file explorer rows, staging content as composer attachment chips that ride along with the next prompt. **Two surfaces, one architecture:** | Surface | Gesture | Result | |---|---|---| | Message thread (user + assistant) | Select text → right-click → "Add as

importance 2@kumamaster-webopentype/featureP3comp/desktopOriginal evidence ↗
pull request

feat: add Nous Blue Contrast theme

## Summary - add a separate `nous-blue-contrast` dashboard preset that preserves Nous Blue chrome while using a navy, high-contrast embedded terminal - add a matching built-in TUI skin with a complete audited dark palette - expose both choices in dashboard configuration and document them - keep the existing `nous-blue` theme unchanged ## Test plan - `scripts

importance 2@gedigiclosedtype/featurecomp/cliarea/configP3comp/dashboardOriginal evidence ↗
pull request

fix(desktop): wire /learn slash command to the backend

## Summary Desktop's `isDesktopSlashCommand` gate rejected `/learn` because it had no row in `DESKTOP_COMMAND_SPECS`, so it never reached the TUI backend handler that already builds the prompt (`agent/learn_prompt.py::build_learn_prompt`). Add it as an `exec()` spec (`argumentMode: text`), matching the existing backend-executed commands. The desktop dispatch

importance 2@rarfopentype/bugP3comp/desktopOriginal evidence ↗
pull request

fix(cron): relay-fronted Slack delivery — synthetic creation-thread capture + preflight fronted-platform blindness

## Summary Two interlocking cron-delivery bugs on relay-fronted Slack deployments (the gateway runs only the relay platform; a connector owns the Slack app). Reported from a live deployment: `/sethome` was set correctly, yet cron jobs created from Slack delivered into the ephemeral thread that Slack spawns around the creation message — and the explicit-targe

importance 2@victor-kyriazakosclosedtype/bugcomp/gatewaycomp/cronplatform/slackP2Original evidence ↗
pull request

feat(kanban): explicit notify/wake delivery modes with faithful wake session routing (salvage #37865)

## Summary Kanban notify subscriptions gain explicit delivery modes — `notify`, `notify+wake`, `wake` — and woken turns now land in the creator's REAL session instead of a context-less parallel one. Salvage of #37865 by @verybigdog onto current main (authorship preserved; original commits carried a local placeholder identity, re-attributed to the contributor

importance 2@teknium1closedtype/featurecomp/clicomp/gatewaycomp/cronP3Original evidence ↗
pull request

fix(agent): default context lookup for empty model IDs (salvage #65515) — un-reds main CI

## Summary Every open PR's CI is currently red on one shard with: ``` FAILED tests/run_agent/test_primary_runtime_restore.py::TestTryRecoverPrimaryTransport::test_allowed_for_nous_anthropic_messages ValueError: Model has a context window of 32,000 tokens, which is below the minimum 64,000 required by Hermes Agent. ``` (Seen on #85444 slice 7/12, #85452 slice

importance 2@kshitijk4poorclosedtype/bugcomp/agentP1Original evidence ↗
pull request

fix(cli): show context-length detection result when saving custom provider

Fixes #2513. When a custom provider is saved via `hermes model` / `hermes setup` with the context-length prompt left blank, the value stays `None` and the runtime resolution chain (`agent/model_metadata.get_model_context_length`) runs silently later. Users got no feedback about which context window was actually in effect — or whether it was a real detection

importance 2@Luna161opentype/bugcomp/cliarea/configP3sweeper:risk-compatibilityOriginal evidence ↗
pull request

fix: dedup context engine tools + fix kimi aux deadcode model name

## What does this PR do? <!-- Describe the change clearly. What problem does it solve? Why is this approach the right one? --> Two small bugfixes from local-mods: 1. **Dedup context engine tools** — `lcm_grep`/`lcm_describe`/`lcm_expand` were injected without checking `valid_tool_names`. On session restore or context-engine re-init, `get_tool_schemas()` retu

importance 1@vincent-wen789type/bugcomp/agentprovider/kimiP2sweeper:risk-compatibilityOriginal evidence ↗
pull request

fix(gateway): stop typing indicator on Telegram after session completion

## Summary Fixes stuck typing indicator on Telegram that persists after normal session completion. ## Problem Two independent issues caused Telegram typing to stay visible indefinitely: 1. **Normal completion**: `_keep_typing` is cancelled, but Telegram adapter had no `stop_typing()` implementation — the base class no-op left the typing bubble to expire on i

importance 1@vincent-wen789type/bugcomp/gatewayplatform/telegramP2sweeper:risk-session-stateOriginal evidence ↗
pull request

fix(auxiliary): prevent URL double-rewrite for custom anthropic_messages endpoints

markdown Bug Description Auxiliary tasks (title generation, vision, compression, etc.) fail with HTTP 404 when using a custom provider with api_mode: anthropic_messages (e.g. Zhipu GLM via https://open.bigmodel.cn/api/anthropic). Error: Auxiliary title generation failed: HTTP 404: Error code: 404 - {'status': 404, 'error': 'Not Found', 'path': '/v4/v1/messag

importance 1@yimi128closedtype/bugcomp/agentarea/configP2sweeper:risk-compatibilityOriginal evidence ↗
pull request

fix(custom-provider): preserve base URL for anthropic_messages api_mode

## Problem When a custom provider is configured with `api_mode: anthropic_messages`, the code in `resolve_provider_client()` unconditionally rewrites the base URL via `_to_openai_base_url()`, converting e.g. `http://host/anthropic` → `http://host/v1`. The Anthropic SDK then appends `/v1/messages` to the base URL, resulting in a request to `/v1/v1/messages` →

importance 1@terlanksclosedtype/bugduplicatecomp/agentarea/configP2Original evidence ↗
pull request

feat(stt): add prompt files and Speaches hotwords

## Summary This PR is rebased onto current `upstream/main` (`6f1870cd1`) and narrowed to complement #65632 rather than duplicate it. It adds only the OpenAI-compatible provider extensions that #65632 does not cover: - `stt.openai.prompt_file`: a UTF-8 prompt file read at transcription time, so vocabulary edits take effect without restarting Hermes; - `stt.op

importance 1@echo931type/featurecomp/clitool/ttsarea/configP3Original evidence ↗
pull request

fix(model_metadata): drop stale cache entries for qwen3.6-plus, grok-4-fast, grok-4.20

## Summary Three model families gained explicit `DEFAULT_CONTEXT_LENGTHS` entries after some users may have already cached lower (incorrect) values through earlier resolution paths. This PR adds stale-cache guards for each, mirroring the pattern used for Kimi (≤32K), MiniMax-M3 (≤204,800), and Grok-4.3 (≤256K) in prior PRs. ### qwen3.6-plus (1M context) The

importance 1@AhmetArif0closedtype/bugcomp/agentprovider/xaiprovider/qwenP3Original evidence ↗
pull request

fix(langfuse): surface reasoning_content in traces (#29482)

## Summary Langfuse assistant-message serialization only reads `message.reasoning`. Reasoning models and adapters can expose reasoning under `reasoning_content` or structured `reasoning_details`, which makes Langfuse traces show `reasoning: None` despite available reasoning data. This PR adds a small reasoning extraction helper and uses it during assistant-m

importance 1@rodboevclosedtype/bugcomp/pluginsP3sweeper:blast-containedOriginal evidence ↗
pull request

feat(agent): per-call output speed (tokens/sec) for desktop status bar and runtime footer

## Summary Stores per-API-call timing and token counts on the agent so downstream consumers (desktop status bar, gateway runtime footer, CLI status bar) can display real-time tokens-per-second. - **run_agent.py**: Initialize `last_api_duration` / `last_output_tokens` on agent - **agent/conversation_loop.py**: Persist per-call `api_duration` + `output_tokens`

importance 1@beresfordsalmonopentype/featurecomp/agentcomp/clicomp/gatewayP3Original evidence ↗
pull request

fix(hindsight): surface missing hindsight-all in local_embedded (#7718)

## Summary `local_embedded` imports the top-level `hindsight` module (from the `hindsight-all` package), but `plugin.yaml` only declares `hindsight-client`. Users who configure `local_embedded` by hand — or upgrade from the legacy `"mode": "local"` — never run the setup wizard that installs `hindsight-all`, so long-term memory is **silently disabled** behind

importance 1@bionicbutterfly13closedtype/bugcomp/pluginstool/memoryP3sweeper:blast-containedOriginal evidence ↗
pull request

test(lazy-deps): cover _venv_pip_install tiers, prompt paths, and ensure_and_bind for 100% coverage

## What does this PR do? Adds comprehensive, network-free unit coverage for the lazy dependency install and binding paths in `tools/lazy_deps.py`. The branch has been reconciled with every newer upstream test in the same file; the final test-only diff retains both upstream coverage and this PR's fallback matrix. ## Related Issue Fixes #36565 ## Type of Chang

importance 1@Christopher-Schulzetype/testcomp/toolsP3sweeper:risk-automationsweeper:blast-containedOriginal evidence ↗
pull request

fix(guardrails): reset failure and no-progress counts on successful file mutation

Currently, if the agent runs a terminal command (like a unit test runner) that fails, and then successfully modifies files to fix the issue (using `patch` or `write_file`), the terminal failure counts are not reset. After `hard_stop_after.exact_failure` (default: 5) attempts, even with different code patches in between, the guardrail blocks the terminal comm

importance 1@dichvuhuuichopentype/bugcomp/agentP2sweeper:risk-session-statesweeper:blast-containedOriginal evidence ↗
pull request

fix(tools): don't report interrupted read_file as File not found (#63069)

## What does this PR do? `read_file` / `read_file_raw` in `tools/file_operations.py` stat the target with `wc -c` before reading it. **Any** non-zero exit fell straight through to `_suggest_similar_files()`, which returns `File not found: <path>`. When a client disconnects mid-turn (`SSE client disconnected; interrupted agent task ...`), the interrupt kills

importance 1@PRATHAMESH75opentype/bugduplicatetool/fileP2sweeper:blast-broadOriginal evidence ↗
pull request

fix(langfuse): include system prompt in generation input (Anthropic system + Codex instructions)

## Summary Langfuse **LLM call** generation observations show conversations without the agent's system prompt (skills, memory, SOUL, tool guidance) for every provider that moves the system prompt out of `messages`: - **Anthropic Messages API** → separate `system` kwarg (`agent/anthropic_adapter.py`), reported in #32175 - **Responses/Codex API** → top-level `

importance 1@FnExpressclosedtype/bugcomp/agentcomp/pluginsP3sweeper:risk-compatibilityOriginal evidence ↗
pull request

fix(auxiliary): keep /anthropic base_url for anthropic_messages custom endpoints

## What does this PR do? The `custom` + `explicit_base_url` branch of `resolve_provider_client()` (in `agent/auxiliary_client.py`) rewrote a trailing `/anthropic` to `/v1` via `_to_openai_base_url()` and then passed that rewritten base to the wrap-decision (`_wrap_if_needed` → `_maybe_wrap_anthropic`) — **even when `api_mode` was `anthropic_messages`**. The

importance 1@AlexanderPrendotaclosedtype/bugcomp/agentprovider/anthropicarea/configP3Original evidence ↗
pull request

fix(gateway): scope GET /api/config to config-only profile to unwedge the event loop (#67936)

## What does this PR do? `GET /api/config` is an `async def` handler that runs on the asyncio event-loop thread, but it entered `_profile_scope(profile)` — the skills-aware scope that acquires the process-global `_SKILLS_PROFILE_LOCK` **synchronously**. When a worker thread holds that lock (e.g. slow model-option / skills discovery during Desktop setup), the

importance 1@PRATHAMESH75closedtype/bugcomp/cliP2sweeper:risk-compatibilitysweeper:blast-moderateOriginal evidence ↗