This release fixes two document-search defects: a search turn that ended with an opaque "internal error" now explains what actually went wrong, and changing the embedding model no longer breaks search until the server is restarted.
✅ No breaking changes. Bug fixes only.
Highlights
Fixed: a document search could end with an unexplained error (v0.117.2)
- A turn that ran the document search tool sometimes ended with
Error: An internal error occurred during agent execution.— with no indication of the cause and the streamed answer replaced by that line. - The search tool itself was never the failure: it returns any problem as a normal result. The error came from the request that follows it, the one that carries the retrieved passages back to the model. Two causes reaching that request were unrecognized and collapsed into the generic message. Both are now reported properly:
- The context window was exceeded. Retrieved passages are added to the conversation before the model answers, so a turn that fit before the search can overflow right after it. The message now says so and names the fixes: start a new chat, remove a large attachment, or retrieve fewer / smaller passages (
RAG_TOP_K,RAG_CHUNK_SIZE). Covers both Azure OpenAI / OpenAI and Anthropic. - The content filter rejected the turn. When Azure OpenAI's filter fires right after a document search, the trigger is usually the retrieved passage in the prompt, not the question you asked. The message now states that, so it reads as something to act on rather than a bug.
- The context window was exceeded. Retrieved passages are added to the conversation before the model answers, so a turn that fit before the search can overflow right after it. The message now says so and names the fixes: start a new chat, remove a large attachment, or retrieve fewer / smaller passages (
Fixed: changing the embedding model silently broke search (v0.117.2)
- Editing the
embeddingsentry in the model catalog applies in-process, without a restart. That change reached document ingestion but not the search side, which stayed pinned to the model resolved when the server started. - The two then embedded with different models, and every search failed on the resulting vector mismatch — with no error in the chat, because a failed search is returned as an ordinary tool result. It looked like the agent simply could not find anything in your documents.
- The catalog is now re-read whenever the agent is rebuilt, so ingestion and search stay on the same model. Removing the entry also clears the previous embedding client instead of leaving it in use.
Unrecognized failures can now be traced without a reproduction (v0.117.2)
- If a run still fails for a cause the server does not recognize, the chat message names the exception type (for example
... (BadRequestError)). - The exception text is never shown, because it can contain request content. The type alone is enough for an operator to match a user's report against the corresponding traceback in the server log.
Included in this release
This release includes implementation work from:
- v0.117.2 through v0.117.2
Notes
- Internal design management content and architecture control artifacts are intentionally omitted from this release note.
Installation
See the repository README for setup and usage instructions.
Version
- Release version:
0.117.2 - Previous release:
0.117.1