CVE-2026-119613: AshAi sends unrecognized tool errors verbatim to MCP clients and the model, disclosing internal details
Summary
Generation of Error Message Containing Sensitive Information vulnerability in ash-project ashai allows a caller of an AshAi tool to read internal error details, including module names and data values, by making a tool call fail.
AshAi.ToToolError gained an implementation for Ash.Error.Unknown.UnknownError that returns the error's error field as is, and AshAi.Tool.Errors.format/1 sends that text to MCP clients (tool calls and resource reads in AshAi.Mcp.Server) and to the model in AshAi.ToolLoop. Ash stores the full Exception.format/2 output of a raised exception, or inspect/1 of a bare {:error, term} return, in that field. A tool result that cannot be JSON-encoded raises a Protocol.UndefinedError whose text includes the inspected value, which can be a whole record with fields the tool never returns. None of these errors were logged. The fix logs them under an error id and returns only that id to the caller.
This issue affects ashai: from 1.5.0 before 1.5.1.
Impact
A caller with tool access sends unexpected or malformed tool arguments until a tool fails, then reads the returned error text to learn internal module and function names and the values the code failed on.
Other sources
Generation of Error Message Containing Sensitive Information vulnerability in ash-project ashai allows a caller of an AshAi tool to read internal error details, including module names and data values, by making a tool call fail.
AshAi.ToToolError gained an implementation for Ash.Error.Unknown.UnknownError that returns the error's error field as is, and AshAi.Tool.Errors.format/1 sends that text to MCP clients (tool calls and resource reads in AshAi.Mcp.Server) and to the model in AshAi.ToolLoop. Ash stores the full Exception.format/2 output of a raised exception, or inspect/1 of a bare {:error, term} return, in that field. A tool result that cannot be JSON-encoded raises a Protocol.UndefinedError whose text includes the inspected value, which can be a whole record with fields the tool never returns. None of these errors were logged. The fix logs them under an error id and returns only that id to the caller.
This issue affects ashai: from 1.5.0 before 1.5.1.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
erlang/ash_aito a version that resolves this vulnerability.Fixed in 1.5.1 - Upgrade
Upgrade
ash_aito a version that resolves this vulnerability.Fixed in 1.5.1
Event History
Frequently Asked Questions
Who can exploit this issue?
A caller must already have access to an AshAi tool. The caller can send unexpected or malformed tool arguments until a tool failure occurs, then read the returned error text.
What information could be exposed through a failed tool call?
Error output can reveal internal module and function names and data values. In particular, a result that cannot be JSON-encoded can expose an inspected value, potentially including an entire record and fields that the tool would not normally return.
Which versions are affected and what changes in the fix?
ash_ai versions from 1.5.0 before 1.5.1 are affected. The fix logs the detailed error under an error ID and returns only that ID to the caller.
Are the leaked errors recorded in logs on affected versions?
No. The supplied details state that these errors were not logged on affected versions.