Add toolCall.askUser.trustModeTimeoutSeconds: in trust mode, an unanswered ask_user question times out and the LLM continues with its best judgment. Fix OpenAI-compatible chat splitting text around a duplicate thinking block, or dropping a few characters, when…
Read full notes
Add toolCall.askUser.trustModeTimeoutSeconds: in trust mode, an unanswered ask_user question times out and the LLM continues with its best judgment.
Fix OpenAI-compatible chat splitting text around a duplicate thinking block, or dropping a few characters, when one stream chunk carries both reasoning and text.
Fix "Waiting for tool call approval" progress being replaced by "Generating" when another tool call finishes while one still waits for approval. eca-emacs#334 Retry or auto-continue Anthropic streams that fail mid-response with an api_error, overloaded_error…
Read full notes
Fix "Waiting for tool call approval" progress being replaced by "Generating" when another tool call finishes while one still waits for approval. eca-emacs#334
Retry or auto-continue Anthropic streams that fail mid-response with an api_error, overloaded_error or timeout_error SSE event, instead of ending the prompt.
Refill the maxAutoContinues recovery budget once a response completes and its tools run, so long turns aren't stopped by failures spread across many steps.
Show consecutive thinking blocks as a single block in chat, live and on resume, without changing the history sent to providers. #643
Show subscription quota (Claude Pro/Max, ChatGPT, GitHub Copilot) with reset times instead of costs in chat usage and provider status, plus a /quota command. #641
Fix "Waiting for tool call approval" progress being replaced by "Generating" when another tool call finishes while one still waits for approval. eca-emacs#334 Scope "approve & remember" approvals to the chat and its subagents instead of all chats, add…
Read full notes
Fix "Waiting for tool call approval" progress being replaced by "Generating" when another tool call finishes while one still waits for approval. eca-emacs#334
Scope "approve & remember" approvals to the chat and its subagents instead of all chats, add /approvals and /forget-approvals commands to list and forget them. #639
Add subagent timeoutSeconds; on timeout or max steps the subagent gets a final no-tools turn to report findings, and a parent stop keeps its partial output. #625 Fix tool-call continuations sending the provider key resolved at prompt start, so a ${cmd:...} key…
Read full notes
Add subagent timeoutSeconds; on timeout or max steps the subagent gets a final no-tools turn to report findings, and a parent stop keeps its partial output. #625
Fix tool-call continuations sending the provider key resolved at prompt start, so a ${cmd:...} key that prints a short-lived token no longer expires mid-prompt; continuations read the key from the current config. #634
Support multiple accounts of the same provider (e.g. work and personal subscriptions) via provider inherit, like "anthropic-work": {"inherit": "anthropic"}. #617
Fix ECA processes overwriting each other's refreshed provider logins in the global cache.
List the new OpenAI gpt-6-sol/gpt-6-luna models for ChatGPT OAuth accounts by bumping the Codex client version the backend gates on. Fix /agent, /model and remote UI agent changes being reverted by the editor's next prompt; /resume now also restores the chat…
Read full notes
List the new OpenAI gpt-6-sol/gpt-6-luna models for ChatGPT OAuth accounts by bumping the Codex client version the backend gates on.
Fix /agent, /model and remote UI agent changes being reverted by the editor's next prompt; /resume now also restores the chat agent. eca-emacs#327
Retry transient openai-chat post-tool failures (e.g. 502) before new output without rerunning tools, so sub-agents survive flaky gateways. #620
Pin plugin sources to verified commits, add explicit /plugin-update, and preserve marketplace identity when installing plugins. Retry transient Anthropic post-tool failures before new output without rerunning tools; show recovery counts and explain exhausted…
Read full notes
Pin plugin sources to verified commits, add explicit /plugin-update, and preserve marketplace identity when installing plugins.
Retry transient Anthropic post-tool failures before new output without rerunning tools; show recovery counts and explain exhausted or disabled recovery.
Expand @file references in custom-command and parameterized-skill arguments into file content before sending the prompt. #163
Fix steered native commands (e.g. /sync-system-prompt) being sent to the LLM as text while the chat runs: run them at the next turn boundary or refuse chat-changing ones. #610
Return globalConfigPath in the initialize response so clients open the config file the server actually reads.
Retry one transient GitHub Copilot token-renewal gateway/service failure. #551 Build native binaries with GraalVM for JDK 25: fixes the idle server burning one CPU core per HTTPS connection closed by a gateway mid-stream. #608
Read full notes
Retry one transient GitHub Copilot token-renewal gateway/service failure. #551
Build native binaries with GraalVM for JDK 25: fixes the idle server burning one CPU core per HTTPS connection closed by a gateway mid-stream. #608
Fix answering pending questions from the remote UI without SSE subscribers; the first editor or HTTP answer wins. Fix GitHub Copilot gpt-5.6-*/gpt-6-* models sent to Chat Completions (unsupported_api_for_model) when the /models catalog is unavailable: gpt >=…
Read full notes
Fix answering pending questions from the remote UI without SSE subscribers; the first editor or HTTP answer wins.
Fix GitHub Copilot gpt-5.6-*/gpt-6-* models sent to Chat Completions (unsupported_api_for_model) when the /models catalog is unavailable: gpt >= 5.3 route to Responses by name.
Keep the catalog API and reasoning variants of hidden GitHub Copilot models (e.g. disabled policy) that are listed explicitly under the provider models config.
Fix context usage counting only output tokens on anthropic-compatible providers that report input usage in message_delta (e.g. Z.AI). #604 Accept unescaped square brackets, non-ASCII and other reserved chars in workspace file URI paths. #594 #605 Fix inflated…
Read full notes
Fix context usage counting only output tokens on anthropic-compatible providers that report input usage in message_delta (e.g. Z.AI). #604
Accept unescaped square brackets, non-ASCII and other reserved chars in workspace file URI paths. #594 #605
Fix inflated costs for OpenAI-compatible providers (e.g. Synthetic); count usage once per request before completion and retain received usage on stream errors.
Tool prompts: push, git config, shell search/read and sub-agents run on explicit request; rule headings are tool-scoped.
Recover Anthropic streaming responses interrupted by transient TLS bad_record_mac failures.
BREAKING: plugins.install now appends across config layers. Set plugins.installMode to replace beside the list to exclude inherited plugins as before.
Add mcpToolSearch config to keep MCP tool schemas out of context until the LLM loads them with the new eca__search_tools tool.
Fix /compact steered while the chat is running: compact with its instructions at the next turn boundary and resume the task, instead of sending it to the LLM as text. #600
Hide GitHub Copilot models the account can't use (model_picker_enabled: false or a disabled policy) instead of listing the whole catalog, and don't fall back to models.dev when none is usable. #601
Pick the GitHub Copilot default model from the account's catalog (versatile, then powerful, then lightweight category) instead of hardcoding gpt-5.5, which some plans don't include.
Fix remote MCP servers whose SSE events omit the space after event: (e.g. Z.AI) hanging on initialize; bump plumcp to 0.2.3. #586
Fix spawn_agent details to include the agent's configured variant; it was only sent when the LLM passed the variant argument explicitly. Add gpt-6-astra support: built-in variants low, medium, high, xhigh, max (no none), Codex Lite/context fallbacks, web…
Read full notes
Fix spawn_agent details to include the agent's configured variant; it was only sent when the LLM passed the variant argument explicitly.
Add gpt-6-astra support: built-in variants low, medium, high, xhigh, max (no none), Codex Lite/context fallbacks, web search and image generation.
Fix directory_tree hiding gitignored files but not their directories (e.g. .git, target); listing an ignored dir directly now shows its contents.
Honor no_proxy/NO_PROXY when routing HTTP and HTTPS requests through environment-configured proxies. #583
Stop retrying provider 429 errors that report exhausted usage or billing quota. #405
Add /agent to switch a chat's primary agent without resetting its established model or variant. #428
Add autoCompactTokensLeft to auto-compact when a fixed number of context tokens remain instead of a percentage. #582
Add view_image tool so the agent can load png/jpg/gif/webp files from disk into context as images for models with image input.
Echo user prompt and show a "Loading config" progress before resolving config, so slow ${cmd:...} keys no longer delay the chat UI. Fix config cache thrashing on unrelated db changes, which re-ran ${cmd:...} commands on every request and poll; cache successful…
Read full notes
Echo user prompt and show a "Loading config" progress before resolving config, so slow ${cmd:...} keys no longer delay the chat UI.
Fix config cache thrashing on unrelated db changes, which re-ran ${cmd:...} commands on every request and poll; cache successful ${cmd:...} results for 5 minutes.
Build fallback variants from /v1/models advertised reasoning efforts (OpenRouter, Synthetic) when no built-in or user variants exist. Add /chats command listing chats from all workspaces grouped by workspace path, with optional title filter. Workspace roots…
Read full notes
Build fallback variants from /v1/models advertised reasoning efforts (OpenRouter, Synthetic) when no built-in or user variants exist.
Add /chats command listing chats from all workspaces grouped by workspace path, with optional title filter. Workspace roots are persisted in the chats index or hash-recovered.
Add built-in effort variants for Claude models on openai-chat providers like OpenRouter, using the verbosity param which maps to Anthropic's output_config.effort.
Read full notes
Add built-in effort variants for Claude models on openai-chat providers like OpenRouter, using the verbosity param which maps to Anthropic's output_config.effort.
Set ECA_AGENT=1 and ECA_CHAT_ID env vars on commands spawned by shell, git, custom tools and hooks so external tooling can detect ECA-spawned commands.
Read full notes
Set ECA_AGENT=1 and ECA_CHAT_ID env vars on commands spawned by shell, git, custom tools and hooks so external tooling can detect ECA-spawned commands.
Improve subagent failure result: rate-limit reset time, parsed Anthropic error code, and retry guidance so the parent agent can re-spawn or switch model.
Read full notes
Improve subagent failure result: rate-limit reset time, parsed Anthropic error code, and retry guidance so the parent agent can re-spawn or switch model.
Add chat/inlinePrompt protocol method: inline editor prompts backed by regular chats, optionally forking an existing chat without replay. New chatInline config for model/agent/variant defaults. Return the new chatId in the chat/fork response and tag inline…
Read full notes
Add chat/inlinePrompt protocol method: inline editor prompts backed by regular chats, optionally forking an existing chat without replay. New chatInline config for model/agent/variant defaults.
Return the new chatId in the chat/fork response and tag inline chats with kind in chat/list.
Add /btw command to ask a side question in a forked chat, keeping the current chat history clean. Runs immediately even while the chat is running (steered /btw is not queued). Add /delete-chat command to permanently delete the current chat or a chat-id from…
Read full notes
Add /btw command to ask a side question in a forked chat, keeping the current chat history clean. Runs immediately even while the chat is running (steered /btw is not queued).
Add /delete-chat command to permanently delete the current chat or a chat-id from the /resume list, asking confirmation first.