3.17.1 Release Notes#
Squirro 3.17.1 was released on September 16, 2026.
Learn more about the Squirro Release Process.
Notes for administrators
This release introduces important changes that may require adjustments to your existing setup. Learn more
What’s New#
Squirro CLI
Manages a Squirro instance from a configuration directory kept in version control, pulling instance configuration into JSON files and applying local edits back. Built to be driven by an AI coding assistant, with a machine-readable configuration schema and a preview before every change. Distributed through the Squirro Registry to selected customers and partners. Learn more
Device page for approving a command-line login with the short code the tool displays, off by default behind
device_authorizationin the[security]section ofcommon.ini.OAuth device-authorization grant (RFC 8628) on the platform token endpoint, through
POST /api/user/oauth2/device_authorizationand adevice_codegrant type on/oauth2/token.
Improvements#
Search#
fieldsparameter applied to recommendations seeded withexternal_id, matchingitem_idseeds.
Platform#
Technical Preview - OpenSearch snapshot repositories for
s3,azure, andgcs, in addition to the read-onlyrepository-url.Tokens minted by an approved device login listed and revocable under My Account, API Access.
Device-login limits in the
[user]section ofuser.ini, covering the poll interval, the outstanding-code cap, rate limits, and the verification URI.
Bug Fixes#
Project ACL query templates not applied consistently across item, note, entity, and recommendation routes.
Entity deletion by
external_idnot fully authorized against the parent documents involved.Recommendations seeded by
external_idresolving to a different document than the seed.Unknown recommendation seeds returning 500 instead of 404, and an unknown
methodreturning 500 instead of 501.Login and token refresh timing out on instances with a large
access_tokenstable.Sorting the Data Ingestion Logs by Body, Title, or Summary silently doing nothing, with existing records sortable once their index rolls over or is reindexed.
Technical Preview - Dataloader job logs not rotated or cleaned up in containerized deployments.
Breaking Changes#
On a project with an ACL query template, requests naming an item the caller may not see now return 404 on
GET,PUT, andDELETEon/items/{item_id}, bulkPUT /items,POSTandPUTon/notes,POST /items/recommend, and the four/entitiesverbs. Identifiers that merely do not exist behave as before.POST /items/existreports such items asfalserather than returning 404, and/notes/querytrims hidden documents silently. Update any client that treats a 404 on these routes as a missing item.On a project whose ACL template keys on
user_values, such asacl_user_idor group membership,/entities/queryand/entities/propertiesreturn narrower results than before. Review any report or integration that depends on the previous, wider result set.The User API nginx include now sets
fastcgi_param REMOTE_ADDR, which the device-authorization flow requires. A cluster carrying a locally edited copy of/etc/nginx/conf.d/user-fastcgi.increceives an.rpmnewfile instead of an updated one. Merge it and reload nginx, otherwise device-login initiation answers429 temporarily_unavailable. Clusters that leave the flow turned off are unaffected.
Project Neo#
Technical Preview | Learn more
Improvements#
genai logincompleting through a browser approval instead of a pasted token, with--manualkeeping the paste flow.Scheduled tasks running as a chosen agent instead of the project configuration, set with
agent_idon the tasks API.agent_idon thetaskstool create and update commands, and--agentongenai task createandgenai task update.Explicit null
agent_idon aPATCHclearing the agent, spelledclear_agent: trueon thetaskstool and--agent ""on the CLI.agent_idnaming an agent the project does not offer refused with 422unknown_agentwhen the task is saved, with the valid identifiers.Running a task by hand against a stale agent refused with 409
stale_task_agent, listing the valid agents.Task whose agent has been retired failing its run and naming the missing agent, with the schedule keeping its place.
Project-authored upload limits on the
genai_configsnapshot, withmax_file_size_bytes,max_storage_bytes, andmax_attachments_per_turnfalling back to the deployment default.Default cap of 20 files per message, with a turn over the project’s cap refused with 422
too_many_attachments.max_attachments_per_turnpublished byGET /files/config.Upload and file configuration refused with 503
file_policy_unavailablewhen the project’s policy cannot be read.thumbnail_urlreturned by the files API as an inline WebP data URI for PNG, JPEG, and WebP uploads.Attachment picker refusing files past the per-message cap and naming them, keeping those that still fit.
Server refusal message for an over-cap turn shown instead of the generic retry toast.
Reason a turn stopped short or broke shown in the conversation, translated in English, German, French, and Italian.
Try again offered only for failures another attempt can resolve, and repeated as the next turn on the thread.
Answer that was produced but not recorded reported while it is still on screen.
Regenerate offered from the turn as the service records it, rather than from what the client witnessed.
File steps named for what happened to the file, rather than for the raw tool identifier.
Anchored edits and appends showing their replacement text as it streams.
Write refused mid-answer reported as a pause while it is retried, and as failed once it is given up on.
Answer feedback bound to the turn that earned it, carrying the vote, reason, and comment only.
Feedback already given shown on reload, surviving branch navigation and regenerate, with a resubmission replacing it.
Feedback reason stored as a stable key rather than as the displayed wording.
Page at
/neoon instances without the Neo web client, stating that Project Neo is unavailable and directing the user to their administrator.Response at
/neokeeping its 404 status while serving the unavailable page.
Bug Fixes#
genaiCLI crashing on an unreachable cluster, and a revoked login not saying to rungenai loginagain.genaiCLI crashing on a malformed cluster URL, andgenai initsaving one it cannot use.Manual
genai loginflow opening a page that does not exist.Agent identifier longer than 64 characters accepted when the configuration was published, then cut short where a conversation or task recorded it.
Regenerated turn losing an attachment silently when the file had been deleted since the original message.
Stopped turn starting to generate again after switching away from the conversation and back.
Failed turn removing its question and its empty answer from the screen.
Conversation whose first turn was stopped spinning in the sidebar indefinitely.
“Generation stopped by user” written into the answer body, and copied along with the answer.
Provider error text shown verbatim on a failed turn, untranslated and carrying account, model, or infrastructure detail.
Branch numbering ordered by completion time rather than by the order the attempts were submitted.
Turn stopped before producing anything reporting “No steps available”.
Send refused by the service leaving the client requesting a conversation that was never created.
Feedback submission failing with 401 in token dev mode.
Scaffolded bundle carrying a non-compiling import path, a
neo-uicommand that does not exist, and anRSBUILD_PORTdefault that resolves toNaN.
Installation and Upgrade#
For new installations, find step-by-step instructions on the Install and Manage Squirro with Ansible page (recommended) and Installing Squirro on Linux pages.
To upgrade an existing installation, see the Upgrading Squirro page.