- Add missing models supported by Github Copilot
- Improve protocol for tool call output formatting for tools that output json.
- Fix inconsistencies in
eca_read_filenot passing correct content to LLM when json.
- Improved file contexts: now use :lines-range
- BREAKING ECA now only supports standard plain-text netrc as credential file reading. Drop authinfo and gpg decryption support. Users can choose to pass in their own provisioned netrc file from various secure source with
:netrcFilein ECA config.
- Improved
eca_edit_fileto automatically handle whitespace and indentation differences in single-occurrence edits. - Fix contexts in user prompts (not system contexts) not parsing lines ranges properly.
- Support non-stream providers on openai-chat API. #174
- Support use API keys even if subscription is logged. #175
- Fix tool call approval ignoring eca tools.
- Fix tool call approval ignoring configs for mcp servers.
- Fix tool call approval thread lock.
- Improve chat title generation.
- Fix completion error handling.
- Default to
openai/gpt-4.1on completion.
- Add
:config-filecli option to pass in config. - Add support for completion. #12
- Run
preToolCallhook before user approval if any. #170
- Only include
parallel_tool_callsto openai-responses and openai-chat if true. #169
- Support clojureMCP dry-run flags for edit/write tools, being able to show preview of diffs before running tool.
- Assoc
parallel_tool_callsto openai-chat only if truth.
- Fix regression in
/compactcommand. #162 - Fix to use local zone for time presentation in
/resume.
- Use web-search false if model capabiltiies are not found.
- Support
/resumea specific chat.
- Fix
openai-chatapi not followingcompletionUrlRelativePath.
- Fix web-search not working for custom models using openai/anthropic apis.
- Support
visiblefield in hooks configuration to show or not in client.
- Deprecate prePrompt and postPrompt in favor of preRequest and prePrompt.
- Fix model capabilities for models with custom names.
- Fix prePrompt hook.
- Add hooks support. #43
- Fix regression on models with no extraPayload.
- Support multiple model configs with different payloads using same model name via
modelNameconfig. (Ex: gpt-5 and gpt-5-high but both use gpt-5)
- Add
anthropic/haiku-4.5model by default.
- Unwrap mentioned @contexts in prompt appending as user message its content. #154
- Improved flaky test #150
- Obfuscate env vars in /doctor.
- Bump clj-otel to 0.2.10
- Rename $ARGS to $ARGUMENTS placeholder alias for custom commands.
- Support recursive AGENTS.md file inclusions with @file mention. #140
- Improve plan behavior prompt. #139
- Add support for secrets stored in authinfo and netrc files
- Added tests for stopping concurrent tool calls. #147
- Improve logging.
- Improve performance of
chat/queryContext.
- Added ability to cancel tool calls. Only the shell tool currently. #145
- Bump mcp java sdk to 0.14.1.
- Improve json output for tools that output json.
- Fix duplicated arguments on
toolCallPreparefor openai-chat API models. editor-code-assistant/eca-emacs#56
- Add
serverto tool call messages.
- Fix last word going after tool call for openai-chat API.
- Fix retrocompatibility with some models not working with openai-chat like deepseek.
- Add
gpt-5-codexmodel as default foropenaiprovider.
- Support "accept and remember" tool call per session and name.
- Avoid generating huge chat titles.
- Add
claude-sonnet-4.5for github-copilot provider. - Add
prompt-receivedmetric.
- Use a default of 32k tokens for max_tokens in openai-chat API.
- Improve rejection prompt for tool calls.
- Use
max_completion_tokensinstead ofmax_tokensin openai-chat API. - Support context/tokens usage/cost for openai-chat API.
- Support
anthropic/claude-sonnet-4.5by default.
- More tolerant whitespace handling after
data:. - Fix login for google provider. #134
- Fix chat titles not working for some providers.
- Enable reasoning for google models.
- Support reasoning blocks in models who use openai-chat api.
- Support google gemini as built-in models. #50
- Deprecate repoMap context, will be removed in the future.
- After lots of tunnings and improvements, the repoMap is no longer relevant as
eca_directory_treeprovides similar and more specific view for LLM to use.
- After lots of tunnings and improvements, the repoMap is no longer relevant as
- Support
toolCall shellCommand summaryMaxLengthto configure UX of command length. #130
- Fix MCP prompt for native image.
- Improve progress notification when tool is running.
- Bump MCP java sdk to 0.13.1
- Improve MCP logs on stderr.
- Support tool call rejection with reasons inputed by user. #127
- Greatly reduce token consuming of
eca_directory_tree- Ignoring files in gitignore
- Improving tool output for LLM removing token consuming chars.
- Fix renew oauth tokens when it expires in the same session.
- Fix metrics exception when saving to db.
- Fix db exception.
- Fix usage reporting.
- Return new chat metadata content.
- Add chat title via prompt to LLM.
- Add support for Opentelemetry via
otlpconfig.- Export metrics of server tasks, tool calls, prompts, resources.
- Use jsonrpc4clj instead of lsp4clj.
- Bump graalvm to 24 and java to 24 improving native binary perf.
- Avoid errors on multiple same MCP server calls in parallel.
- Fix openai cache tokens cost calculation.
- Improve welcome message.
- Improve large file handling in
read-filetool:- Replace basic truncation notice with detailed line range information and next-step instructions.
- Allow users to customize default line limit through
tools.readFile.maxLinesconfiguration (keep the current 2000 as default).
- Moved the future in :on-tools-called and stored it in the db. #119
- Support
compactPromptFileconfig. - Fix tools not being listed for servers using mcp-remote.
- Add
/compactcommand to summarize the current conversation helping reduce context size. - Add support for images as contexts.
- Support http-streamable http servers (non auth support for now)
- Fix promtps that send assistant messages not working for anthropic.
- Fix manual anthropic login to save credentials in global config instead of cache.
- Minor log improvement of failed to start MCPs.
- Bump mcp java sdk to 1.12.1.
- Fix mcp servers default timeout from 20s -> 60s.
- Support timeout on
eca_shell_commandwith default to 1min. - Support
@cursorcontext representing the current editor cursor position. #103
- Fix setting the
web-searchcapability in the relevant models - Fix summary text for tool calls using
openai-chatapi.
- Bump mcp-java-sdk to 0.12.0.
- Added missing parameters to
toolCallRejectedwhere possible. PR #109 - Improve plan prompt present plan step.
- Add custom behavior configuration support. #79
- Behaviors can now define
defaultModel,disabledTools,systemPromptFile, andtoolCallapproval rules. - Built-in
agentandplanbehaviors are pre-configured. - Replace
systemPromptTemplateFilewithsystemPromptFilefor complete prompt files instead of templates.
- Behaviors can now define
- Remove
nativeToolsconfiguration in favor oftoolCallapproval anddisabledTools.- Native tools are now always enabled by default, controlled via
disabledToolsandtoolCallapproval.
- Native tools are now always enabled by default, controlled via
- Add
totalTimeMsto reason and toolCall content blocks.
- Add nix flake build.
- Stop prompt does not change the status of the last running toolCall. #65
- Add
toolCallRunningcontent tochat/contentReceived.
- Support more providers login via
/login.- openai
- openrouter
- deepseek
- azure
- z-ai
- Remove the need to pass
requestIdon prompt messages. - Support empty
/logincommand to ask what provider to login.
- Support user configured custom tools via
customToolsconfig. #92 - Fix default approval for read only tools to be
allowinstead ofask.
- Fix renew token regression.
- Improve error feedback when failed to renew token.
- Support
denytool calls viatoolCall approval denysetting.
- Safely rename
default*->select*inconfig/updated.
- Support
chat/selectedBehaviorChangedclient notification. - Update models according with supported models given its auth or key/url configuration.
- Return models only authenticated or logged in avoid too much models on UI that won't work.
- New server notification
config/updatedused to notify clients when a relevant config changed (behaviors, models etc). - Deprecate info inside
initializeresponse, clients should useconfig/updatednow.
- Improve anthropic extraPayload requirement when adding models.
- Add message to when config failed to be parsed.
- Fix context completion for workspaces that are not git. #98
- Fix session tokens calculation.
- Drop
agentFileRelativePathin favor of behaviors customizations in the future. - Unwrap
chatconfig to be at root level. - Fix token expiration for copilot and anthropic.
- Considerably improve toolCall approval / permissions config.
- Now with thave multiple optiosn to ask or allow tool calls, check config section.
- Fix session-tokens in usage notifications.
- Support context limit on usage notifications.
- Fix session/message tokens calculation.
- Fix anthropic token renew.
- Fix command prompts to allow args with spaces between quotes.
- Fix anthropic token renew when expires.
- Fix graalvm properties.
- Improve plan-mode (prompt + eca_preview_file_change tool) #94
- Add fallback for matching / editing text in files #94
- Require approval for
eca_shell_commandif running outside workspace folders. - Fix anthropic subscription.
- Fix pricing for models being case insensitive on its name when checking capabilities.
- Improve api url error message when not configured.
- Fix
anthropic/claude-3-5-haiku-20241022model. - Log json error parsing in configs.
- Add login providers and server command to
/doctor.
- Improved the
eca_directory_treetool. #82
- Support relative contexts additions via
~,./../and/. #61
- Anthropic subscription support, via
/login anthropiccommand. #57
- Fix copilot requiring login in different workspaces.
- Fix proxy exception. #73
- Support custom UX details/summary for MCP tools. #67
- Support clojureMCP tools diff for file changes.
- Fix reasoning titles in thoughts blocks for openai-responses.
- Fix hanging LSP diagnostics requests
- Add
lspTimeoutSecondsto config - Support
HTTP_PROXYandHTTPS_PROXYenv vars for LLM request via proxies. #73
- Disable
eca_plan_edit_filein plan behavior until better idea on what plan behavior should do.
- Consider
AGENTS.mdinstead ofAGENT.md, following the https://agents.md standard.
- Fix option to set default chat behavior from config via
chat defaultBehavior. #71
- Fix support for models with
/in the name like Openrouter ones.
- Refactor config for better UX and understanding:
- Move
modelsto insideproviders. - Make
customProviderscompatible withproviders. models need to be a map now, not a list.
- Move
- Update copilot models
- Drop uneeded
ollama useToolsandollama thinkconfigs. - Refactor configs for config providers unification.
<provider>ApiKeyand<providerApiUrl>now live in:providers "<provider>" :key.- Move
defaultModelconfig from customProvider to root.
- Add
/logincommand to login to providers - Add Github Copilot models support with login.
- Add
/doctorcommand to help with troubleshooting
- Fix args streaming in toolCallPrepare to not repeat the args. editor-code-assistant/eca-nvim#28
- Add editor tools to retrieve information like diagnostics. #56
- Change api for custom providers to support
openai-responsesinstead of justopenai, still supportingopenaionly. - Add limit to repoMap with default of 800 total entries and 50 per dir. #35
- Add support for OpenAI Chat Completions API for broad third-party model support.
- A new
openai-chatcustom providerapitype was added to support any provider using the standard OpenAI/v1/chat/completionsendpoint. - This enables easy integration with services like OpenRouter, Groq, DeepSeek, Together AI, and local LiteLLM instances.
- A new
- Add support for auto read
AGENT.mdfrom workspace root and global eca dir, considering as context for chat prompts. - Add
/prompt-showcommand to show ECA prompt sent to LLM. - Add
/initcommand to ask LLM to create/updateAGENT.mdfile.
- breaking: Replace configs
ollama hostandollama portwithollamaApiUrl.
- Fix
chat/queryContextto not return already added contexts - Fix some MCP prompts that didn't work.
- Fix anthropic api for custom providers.
- Support customize completion api url via custom providers.
- Support manual approval for specific tools. #44
- Improve plan-mode to do file changes with diffs.
- Fix initializationOptions config merge.
- Fix default claude model.
- Fix some commands not working.
- Fix build
- Get models and configs from models.dev instead of hardcoding in eca.
- Allow custom models addition via
models <modelName>config. - Add
/resumecommand to resume previous chats. - Support loading system prompts from a file.
- Fix model name parsing.
- Fix openai reasoning not being included in messages.
- Support parallel tool call.
- Improve
eca_shell_commandto handle better error outputs. - Add summary for eca commands via
summaryfield on tool calls.
- Default to gpt-5 instead of o4-mini when openai-api-key found.
- Considerably improve
eca_shell_commandto fix args parsing + git/PRs interactions.
- Fix openai skip streaming response corner cases.
- Allow override payload of any LLM provider.
- Support custom commands via md files in
~/.config/eca/commands/or.eca/commands/.
- Support
claude-opus-4-1model. - Support
gpt-5,gpt-5-mini,gpt-5-nanomodels.
- Replace
chatbehavior withplan.
- fix query context refactor
- Avoid crash MCP start if doesn't support some capabilities.
- Improve tool calling to avoid stop LLM loop if any exception happens.
- Add
/repo-map-showcommand. #37
- Support custom system prompts via config
systemPromptTemplate. - Add support for file change diffs on
eca_edit_filetool call. - Fix response output to LLM when tool call is rejected.
- Rename
eca_list_directorytoeca_directory_treetool for better overview of project files/dirs.
- Improve
eca_edit_filetool for better usage from LLM.
- Fix mcp tool calls.
- Improve eca filesystem calls for better tool usage from LLM.
- Fix default model selection to check anthropic api key before.
- Support MCP resources as a new context.
- Fix usage miscalculation.
- Fix reason-id on openai models afecting chat thoughts messages.
- Support openai o models reason text when available.
- Fix MCPs not starting because of graal reflection issue.
- Fix native image build.
- Support enable/disable tool servers.
- Bump mcp java sdk to 0.11.0.
- Improve ollama model listing getting capabilities, avoiding change ollama config for different models.
- Support reasoning for ollama models that support think.
- Fix ollama tool calls.
- fix web-search support for custom providers.
- fix output of eca_shell_command.
- Improve tool call result marking as error when not expected output.
- Fix cases when tool calls output nothing.
- Add chat command type.
- Fix MCP prompts for anthropic models.
- Fix tool calls
- Improve welcome message.
- Fix openai api key read from config.
- Support commands via
/. - Support MCP prompts via commands.
- Fix error field on tool call outputs.
- Fix reasoning for openai o models.
- Add support for file contexts with line ranges.
- Fix openai
max_output_tokensmessage.
- Fix usage metrics for anthropic models.
- Improve
eca_read_filetool to have better and more assertive descriptions/parameters.
- Increase anthropic models maxTokens to 8196
- Support thinking/reasoning on models that support it.
- Include eca as a server with tools.
- Support disable tools via config.
- Improve ECA prompt to be more precise and output with better quality
- Make generic tool server updates for eca native tools.
- Support tool call approval and configuration to manual approval.
- Initial support for repo-map context.
- Add client request to delete a chat.
- Support defaultModel in custom providers.
- Add usage tokens + cost to chat messages.
- Fix openai key
- Support custom LLM providers via config.
- Improve context query performance.
- Fix output of errored tool calls.
- Fix arguments test when preparing tool call.
- Add support for global rules.
- Fix origin field of tool calls.
- Allow chat communication with no workspace opened.
- Improve default model logic to check for configs and env vars of known models.
- Fix past messages sent to LLMs.
- Support stop chat prompts via
chat/promptStopnotification. - Fix anthropic messages history.
- Add native tools: filesystem
- Add MCP/tool support for ollama models.
- Improve ollama integration only requiring
ollama serveto be running. - Improve chat history and context passed to all LLM providers.
- Add support for prompt caching for Anthropic models.
- Allow comments on
jsonconfigs. - Improve MCP tool call feedback.
- Add support for env vars in mcp configs.
- Add
mcp/serverUpdatedserver notification.
- Add env support for MCPs
- Add web_search capability
- Add
o3model support. - Support custom API urls for OpenAI and Anthropic
- Add
--log-level <level>option for better debugging. - Add support for global config file.
- Improve MCP response handling.
- Improve LLM streaming response handler.
- Fix ollama servers discovery
- Fix
.eca/config.jsonread from workspace root - Add support for MCP servers
- First alpha release