Version 2.4.9#
A new release of Sherpa AI Server is available: Version 2.4.9.
1. Chat screen reliability#
On the Chat screen, the activity indicator no longer disappears while the run is active. If an error occurs, the feed shows the error text and a Retry button.
The conversation title is now built from the first user message instead of a document fragment; fabricated topics from the language model are discarded. Title generation no longer fails with error 500 on a long response from a reasoning model: the unclosed internal reasoning block is removed, and the title is truncated to 256 characters.
This helps users understand the conversation state, recover faster after a failure, and see meaningful chat names.
2. Assistant response sources#
On the Chat screen, technical RAG chunks are hidden inside a collapsed response-sources block. The block can be expanded; in the expanded state, it takes the full width of the response area and shows the sources in three columns.
This makes the Assistant response easier to read while keeping technical sources available when needed.
3. Chat settings and the default model#
If an account has no custom models, the chat settings show the default model from the Sherpa AI Server environment.
This helps users start working in chat without preconfiguring models for a new account.
4. API tokens#
On the API tokens screen, each table row now includes a secret regeneration icon. After confirmation, the old token value stops working, and the new value is shown only once.
The API token create and edit dialog now follows the brandbook theme colors and classes: fields and buttons remain readable in dark mode. The confirmation text for secret regeneration and the 403 access error during the regeneration method call have been fixed.
Secret regeneration is also available through the API:
POST /api/v1/api_tokens/{api_token_guid}/regenerate
This simplifies secure rotation of integration keys without creating a new token record.
5. Account creation#
On the Accounts screen, when creating a child account, it is now possible to enable copying models and model instances from the parent account. The form includes a corresponding checkbox; the API uses the copy_models_and_instances parameter in POST /api/v1/accounts.
This speeds up deployment of new accounts with an already configured model set.
6. Models screen#
When a model is deleted, its instances are now cascade-marked as deleted. The instance name of a deleted model no longer blocks creation of a new model with the same name.
The label for the model instance field has been clarified: “Subpath” (path continuation), not “Sub path”.
This reduces confusion when configuring external providers and makes name reuse easier.
7. Side menu#
The lightning icon has been restored for the Assistants section in the side menu instead of the users icon.
This helps distinguish the assistants section from neighboring menu items more quickly.
8. Cleanup of stuck runs#
Periodic cleanup has been added for runs in waiting and in_progress statuses that are older than the configured time (24 hours by default). The task runs as a background supervisord job; a CLI command backend/bin/run-stuck-cleanup.php is available for manual execution.
The parameters are configurable by an administrator through the RUN_STUCK_TTL_HOURS and RUN_STUCK_CLEANUP_INTERVAL_SECONDS environment variables.
There are no new product screens for this change. It helps administrators keep long-running installations stable and avoid accumulating “stuck” conversations.
9. OCR and the LLM Docker image#
The PDF OCR page limit (PDF_OCR_MAX_PAGES, 1000 by default) and the other operational OCR parameters have been moved into documented .env.* files.
The Docker image for the local language model has been updated to Python 3.13 and the aligned vLLM 0.27.1 stack, with dependency checks and a smoke import during the build.
There are no new product screens for these changes. It makes OCR configuration and GPU environment updates easier for administrators.
10. Safe outbound data sent to the external LLM#
For agent runs through an external DIT LLM, outgoing data is sanitized before chat/completions is called: the aiserver_python code is removed from the history, and tool message content is truncated with UTF-8 awareness. The mode is enabled automatically for DIT/i.moscow connections and via the LLM_OUTBOUND_SANITIZE_TOOL_PAYLOADS=1 environment variable (described in .env.*).
This reduces the risk of sending extra technical data to an external provider and improves integration stability.
11. Improved API documentation#
The Swagger documentation for POST /api/v1/folders/{folder_guid}/files/{file_guid}/chunks now describes the empty {} body, server-side account_guid substitution, and the difference from addChunk; responses 400, 500, and 501 have been added.
API documentation is available in Swagger: https://aiserver.sherparpa.ru/api/docs/swagger
This simplifies integrations and reduces validation errors when working through Swagger or curl.