SQL Sage changelog
What changed in each version of SQL Sage, newest first. Entries marked Security or Privacy fix something that mattered for your data or your servers — we say plainly what was wrong before.
Updating: the SQL Sage panel checks for new versions and shows a banner; its Download button opens the latest signed installer. Close SSMS first, then run it. See Update & uninstall. Versions before 0.16.0 are not listed here; every release, with its installer, is also on GitHub. To follow new releases, subscribe to the RSS feed.
1.0.0Feature
- SQL Sage 1.0. This version ends the 0.x series. It works the same as 0.36.3: nothing was added, changed or removed. SQL Sage has been tested on SQL Server 2017, 2019 and 2022, Azure SQL Database and Azure SQL Managed Instance, with Windows, SQL and Microsoft Entra sign-in, on x64 and Arm64.
- What 1.0 means for a perpetual licence. A perpetual licence covers every version with a major version number of 1 or lower, so it includes 1.0 and every later 1.x update. See section 4 of the Terms.
0.36.3FeatureFix
- A clearer card when the trial ends. The SQL Sage Free card now says that the editor tools keep working for free and shows what you used in the trial, for example AI answers and proofs, counting only what is above zero. It explains what a licence gives, shows the price for this version ($39 once with updates through 1.x, or $29 a year; the checkout shows your final price) and says that AI usage is not included, because it stays on your own Claude or ChatGPT account. Buy SQL Sage is now the first button, before Enter license key.
- Plan details without empty counters. The plan details now list only the counters that are above zero, and leave the section out until something has been counted. In the trial and on SQL Sage Free they also show the price under the Pro list, with Personal, Team 3 or Team 10 on the pricing page.
- Honest wording for the ChatGPT route. Getting started now says the Codex route needs a ChatGPT plan that includes the Codex CLI, which OpenAI's plan page lists for Plus and above. Before, it said the route also worked on the free ChatGPT plan, which that page does not say for the CLI.
0.36.2FeatureFix
- Connect an AI is done only when chat can use that AI. Getting started no longer marks Connect an AI as done while chat is still set to an AI that is not installed or signed in, and it keeps the Use this for chat button on the AI that is ready. Before, the step could show as done while chat was set to an AI that could not answer, and the button to switch was hidden.
- Free tools in the trial’s Getting started. During the trial, Getting started now has one-click buttons for What’s blocking now, Search and History, which work without any AI. The note about sending data to an external AI now appears at the Connect an AI step. Asking for an AI explanation before an AI is connected now takes you to the Connect an AI step instead of failing, and nothing is sent. See Getting started in three steps.
0.36.1Fix
- Licence checked when SSMS starts. SQL Sage now checks a paid licence when SSMS starts and loads SQL Sage, even if you never open the SQL Sage panel; before, the first check waited until you opened the panel. Without a licence key nothing is sent. Starting SSMS never starts a trial: as before, the 30-day trial begins with your first AI answer, or 14 days after you first open the SQL Sage panel, whichever comes first.
0.36.0SecurityFix
- Renewals picked up without reopening the panel. A paid licence is now checked about every 12 hours while SSMS stays open, so a renewal is picked up on its own. Before this version the licence was checked only when the panel started and after you entered a key. A licence change never interrupts a running request: it applies from your next AI request. See Getting started, trial & licence and the updated Terms of Service, section 8.
- Check now in the offline banner. The offline grace banner now has a Check now button.
- Correct Inline suggestions tooltip. The tooltip now says that Alt+. works through Claude Code or Codex, signed in with your own Claude or ChatGPT account, and that automatic suggestions instead need your own Anthropic key and no CLI. Before, it said that no key was needed on any route.
- Second publisher key. SQL Sage now carries a second publisher key, so a future key change will not need you to re-enter your license.
- Download count no longer follows a redirect. The anonymous download count no longer follows a redirect. Before this version it did.
0.35.9Fix
- Faster Mask names on long text. A long chat or tool result that quotes a SQL Server error message, for example a login message inside hundreds of KB of text, is now masked in milliseconds instead of up to 2 seconds. Before this version, on a busy machine such a request could hit the masking time limit and fail without being sent; nothing unmasked was ever sent.
0.35.8Fix
- Unattended install now works. With /VERYSILENT /SUPPRESSMSGBOXES every installer message takes a fixed answer: setup stops with exit code 1 when SSMS 22 is missing or running, and finishes with exit code 0 when no AI CLI is found. Before this version three of its messages waited for a click even in silent mode.
- Retry checks again. When SSMS is running, Retry in the installer now checks again and continues only once SSMS is closed. Before, it continued without checking.
- Correct notice about a missing AI CLI. The end-of-setup notice now looks where the panel does, including npm installs, and says it checked only the account running setup. Before, an npm install of Claude Code or Codex brought the notice up wrongly.
- Claude Code from npm found. SQL Sage now finds Claude Code installed with npm even when SSMS was started with a PATH that does not include the npm folder.
0.35.7PrivacyFix
- Privacy fix: Mask names now covers names quoted by SQL Server error messages. With Mask names on, a login, database or server that a SQL Server error message quotes, for example Msg 18456 or 18470 Login failed for user, 916, 4060, 229 or 40613, is now replaced with a placeholder in Explain error, tool results and inline completions, even when SQL Sage had not read that name from the server. Before this version such a name went to the AI as the message showed it, unless it was the connection's own login or on the server's list of names.
- Cleaner History previews. SQL Sage History now skips GO lines with a trailing comment, such as GO -- setup, in the first-line preview of an entry.
0.35.6SecurityFix
- Security fix: the license check no longer follows a redirect. Before this version, on .NET Framework the license check followed 301, 302 and 307 redirects to another host and accepted that host's answer. Now any redirect counts as no answer, so SQL Sage keeps your current license state, exactly as when the server is unreachable.
- Oversized answers ignored. A license server answer larger than 64 KB is also treated as no answer.
- Future key change without re-entering your license. SQL Sage can now verify licenses signed by more than one publisher key, so a future key change will not need you to re-enter your license.
0.35.5Fix
- Two SSMS windows no longer break the audit log hash chain. When several SSMS instances write to the same day's audit file, the file now verifies as one intact chain.
- No more silently dropped audit entries. If an audit entry cannot be written, SQL Sage now records that in its diagnostic log instead of dropping it silently.
- Evidence export works next to another SSMS window. Exporting an evidence pack no longer fails while another SSMS window is writing to the audit log.
- License valid through. The plan popover now shows License valid through with the date your license is valid until, instead of a paid-through date that included 14 days of grace.
- Honest message when the subscription cannot be checked. When SQL Sage cannot confirm your subscription online, the panel now says so and shows until when AI keeps working, instead of saying the subscription has expired.
- What the hash chain shows. The Export evidence tooltip and the evidence pack now state that the hash chain shows edits or removals of entries inside a day's file, but not a deleted file or missing newest lines.
0.35.4SecurityPrivacy
- Privacy fix: passwords no longer reach the audit log. Before this version the audit log kept every statement exactly as it ran, so a statement such as
CREATE LOGIN … WITH PASSWORD = '…'was written to disk with the password in plain text. Now passwords and other secret values are replaced with?before the entry is written, with the same rules as SQL Sage History. A statement whose secrets cannot be masked safely is not kept, and the entry says it was withheld. - Files already on disk do not change. Entries written by SQL Sage 0.35.3 and earlier still hold the statement as it ran, and so do evidence packs exported from them. You can delete
audit-YYYYMMDD.jsonlfiles dated before this update from%LOCALAPPDATA%\SqlSage\audit. If one of those passwords is still in use, change it. The audit log never left your machine. Older files still verify. - Going back to an older version. SQL Sage 0.35.3 and older show the audit entries written by this version as a broken chain.
- F5 warning without the wait. The F5 warning now writes its audit entry in the background, so a large script never waits for it.
0.35.3SecurityPrivacyFix
- Safety fix: the F5 warning also covers scripts with
GO n. The warning now asks before a risky statement, for exampleDELETEwithoutWHERE, when the script repeats a batch withGO n. Before this version, aGO 5line in a script saved by SSMS could hide the risk. - Explain error with literals masked. Explain error in SQL Sage History now checks the catalog against your original query even when literals are masked, so it no longer says the query references no table when it does. When a query could not be analyzed, it says so plainly.
- Privacy fix: values quoted in error messages. Error messages that quote part of your query, such as an unclosed quotation mark or incorrect syntax near a value, no longer send that value to the AI when literals are masked.
- GO lines kept as written. Format SQL, Expand wildcards and Qualify object names keep
GOlines exactly as written, including a repeat count such asGO 35, and SQL Sage History shows such scripts with their real class instead of UNKNOWN.
0.35.2Fix
- The F5 warning names the target. The warning now shows the server and database the statement will run against, so you confirm the right target, and the audit records the same target.
- Reopened chats that used your own API key. Reopening a saved chat that used your own API key now shows the tool steps as the same short lines you saw live instead of raw data.
- Late errors from a cancelled query. An error that arrives late from a query you cancelled is no longer attached to your next query in SQL Sage History or the Explain error bar.
0.35.1PrivacyFix
- Privacy fix: Mask names now covers AI inline suggestions. Before this version, AI inline suggestions sent the text around the cursor unchanged even with Mask names on. Now Alt+. (with Claude Code or Codex) and automatic suggestions with your own API key send that text with server, database, login, host and file names replaced by placeholders, and SQL Sage puts the real names back into the suggestion on your computer before it appears.
- If the names cannot be read for the window’s connection, the AI request is not sent at all and the status bar says why. The suggestions that work without AI keep working.
- Table and column names are not masked, as before.
0.35.0Feature
- SQL Sage History can now answer “Is this slower than before?” for a query you ran. SQL Sage finds the statement in Query Store, compares its plans and run times and states a verdict that the code works out from the numbers, with no AI.
- A link is called proven only when both the query shape and the exact statement text match. Otherwise the card says how sure it is and why, for example that Query Store records a cheap statement only after about 30 runs.
- Show query opens the exact T-SQL behind every number, Copy as note gives you Markdown for a ticket, and the force-plan action only writes a script. Explain places a prompt in the chat and sends nothing until you press Send.
- The card needs a SQL Sage license; on Free you see what Query Store holds for the query.
- Connect repository: saving the repository map is now atomic and leaves no temporary files.
0.34.0Feature
- SQL Sage Search can now show who writes and who reads a column. Right-click a column (or use Reads/writes in the preview) and SQL Sage lists the procedures, functions, views and triggers that update it and those that only read it, as SQL Server records them.
- Each row says how sure it is. A module that writes the table without SQL Server naming the column is shown as a writer, with that caveat.
- An empty list always says what was not checked (dynamic SQL, application code, other databases) instead of claiming that nothing writes the column.
- It runs only when you ask, reads the catalog, uses one connection and can be cancelled. Part of SQL Sage Free, with no AI.
0.33.3Fix
- Change-Impact with a table name without its schema. Change-Impact now finds the procedures, views and functions that depend on a table even when you name it without its schema. When the object does not exist, it says so instead of reporting that nothing depends on it.
- Full names in Change-Impact. Foreign-key and index names are no longer cut short, and names with a dot or spaces inside brackets (for example
[Order.Lines]) now point at the right object. - The permissions audit of an object always looks in the current database.
- Show impact in the F5 warning waits for you. It now places the prompt in the chat box and shows what would leave your computer. Nothing is sent to the AI until you press Send.
0.33.2Fix
- The grey alias after FROM with GitHub Copilot installed. The short alias after
FROMand a table name now also appears when GitHub Copilot is installed but its suggestions are not active in SSMS. It still steps aside while Copilot’s completions are on. - Azure SQL Database with Mask names on. SQL Sage no longer reads
sys.master_filesthere, so chat tools no longer hit error 208 at the start of a session. - The real error when the server rejects a query. When the server rejects a query (for example an unknown table, a syntax error or a missing permission), chat tools now show that error at once instead of retrying on other connections and reporting a Microsoft Entra sign-in problem.
- The local count of aliases kept in your queries now ignores tables you removed before running.
0.33.1Feature
- A short alias right after FROM. After
FROM, a table name and a space, SQL Sage can suggest a short alias in grey text, for exampleRegistration r. Tab accepts it; any other key dismisses it. - It appears only in
SELECTstatements that do not already use the table name (Registration.Id). - It steps aside while the SSMS IntelliSense list is open, and stays off where Redgate SQL Prompt, dbForge SQL Complete or GitHub Copilot is installed, so suggestions are not doubled (since 0.33.2 it steps aside for GitHub Copilot only while Copilot’s completions are on).
- Settings › Aliases on JOIN insert › Follow the statement turns it off together with the JOIN aliases. Part of SQL Sage Free, with no AI.
0.33.0Feature
- The related-tables list after JOIN can also give the table in FROM a short alias when that is safe, for example
Registration r, so theONclause stays short. The list says so before you press Tab, and one Ctrl+Z undoes both changes. - FROM stays as you typed it when the query already uses the table name (
Registration.Id), inUPDATE,DELETEandMERGE, and next to CTEs orAPPLY; the list says why. - Aliases skip common prefixes (
tblCustomerbecomesc), and two tables with the same name in different schemas get aliases from their schema (hr,ar). - To keep the previous behaviour, choose Settings › Aliases on JOIN insert › Follow the statement. Part of SQL Sage Free, with no AI.
0.32.1FeatureFix
- The related-tables list after JOIN learns from your own SQL Sage History. A join you have run before shows up as ↺ used N×, which helps most on databases without foreign keys. It ranks after foreign keys and before name matches. It is worked out on this computer only and nothing is sent anywhere; while History is paused or off, there are no learned joins.
- Azure SQL sign-in for chat tools. Chat tools such as the table list and table descriptions now sign in on Azure SQL with a SQL login, Microsoft Entra Password or Service Principal, the same way the editor features do since 0.31.1.
- The Now section’s status line now always matches the snapshot shown.
0.32.0Feature
- What’s blocking now — free, with no AI. A new Now section in SQL Sage History (also Tools › SQL Sage Tools › What’s blocking now) shows who is blocking whom right now, including an idle session that left a transaction open, and the open transactions older than 30 seconds with their age. It reads the sessions when it opens and again only when you press Refresh. See it on the home page.
- It labels the session that is probably yours and says how sure it is: Proven: this SSMS or Inferred: matches your History. When your login cannot see other sessions, it says blocking is unknown instead of showing an empty list; on Azure SQL Database it says that running requests are visible only for your own connection.
- Nothing runs from there: KILL, GRANT and the blocker’s SQL open as scripts in a new query window.
- F5 now asks before a KILL runs, while Warn on risky F5 is on (the default).
KILL … WITH STATUSONLYonly reports rollback progress, so it does not ask. - Explain with AI (licence) explains what is blocking and first shows exactly what it would send, masked by your privacy settings; nothing from your History is sent. The Privacy Policy describes it.
0.31.2FeatureFix
- Check for updates. A new button in the panel’s Settings and in Tools › SQL Sage Tools checks right away. SQL Sage also checks again every few hours while SSMS stays open, not only at start-up; the automatic check can be turned off. The request is the same as before and carries no identifier.
- The related-tables list after JOIN resolves a table name without a schema the way SQL Server does — your default schema, then
dbo— so it works when the same table name exists in several schemas. - When the list still cannot help, it says why in one line (for example: qualify the table name to see related tables) instead of showing nothing.
- SQL Sage Search picks up the connection of the active query window by itself, also when SSMS restored the Search window with its window layout at start-up.
0.31.1Fix
- Azure SQL sign-in fix. With a SQL login, Microsoft Entra Password or Service Principal sign-in, SQL Sage Search and the related-tables list after JOIN could not sign in: the connection SSMS hands over hides the password once it is open. SQL Sage now signs its own sessions in with the query window’s credentials, kept in memory only and never written to a connection string or a log.
- When reading the schema fails, the list and the search now say why instead of showing nothing.
0.31.0Feature
- Write faster — free, with no AI. After
JOIN, SQL Sage lists the related tables with an alias and the fullONclause: from foreign keys, and on databases without foreign keys from matching key column names, always marked ≈ by name. Tab or Enter inserts the clause as one undo step. See it on the home page. - SQL Sage Search (Ctrl+Alt+D, or Tools › SQL Sage Tools › Find object) finds tables, views, procedures, functions and columns by name, and text inside definitions, across all databases on the server. Databases it cannot read are listed, not skipped silently.
- Neither one runs your SQL or sends anything to AI. Both are part of SQL Sage Free.
- Fixes: join suggestions no longer mix up tables with the same name in different schemas, and SQL Sage’s own sessions identify themselves to the server as
SqlSage.
0.30.0Feature
- Closed a query tab without saving? SQL Sage History now keeps it: a Recently closed (unsaved) section lists the tabs you closed without saving, for 30 days, on this computer only and encrypted for your Windows account.
- Only passwords and other secrets are replaced with
?; the rest of your script is kept exactly as typed, in closed tabs and in the run history alike. - Open in new window brings the text back next to the server it was connected to, and never runs anything.
- Getting started now recognises the AI answers you had before 0.29.0.
- The Privacy Policy lists the new local data.
0.29.0Feature
- Getting started in three steps: check your database (free, no AI), connect an AI, and get your first answer.
- SQL Sage detects Claude Code, the Codex CLI and an API key on its own, explains what each route costs and copies the exact install command. It never runs an installer for you.
- A plan pill in the chat header shows your trial, Free or paid plan with its dates. It also shows what you have done with SQL Sage on this computer (counted locally, nothing is sent) and what each plan includes.
- The license window no longer uses pop-up message boxes. It offers a key it finds on the clipboard without activating it, shows errors in place and says exactly what is checked online: the license identifier, never the key.
0.28.1Fix
- Codex model choice works with older Codex CLIs. SQL Sage no longer picks a model that your installed Codex CLI cannot run.
- With an older Codex CLI, SQL Sage keeps using GPT-5.5 until OpenAI retires it (14 October 2026, 19:00 UTC). After that it tells you plainly to update the Codex CLI.
- When a model is rejected, the model menu still lists the other models and marks the ones that are not available, with the reason. SQL Sage never switches to a more expensive model on its own.
- Switching between Claude and ChatGPT shows that the model list is loading, and brings back your last choice for that provider.
0.28.0Feature
- A fairer trial. The 30-day trial now starts with your first AI answer, or 14 days after you first open the SQL Sage panel, whichever comes first. Installing early or exploring the free tools no longer uses up trial days.
- Trials that already started keep their dates.
- The Terms of Service (section 8) and the Privacy Policy are updated to match. They now say exactly when AI features stop after a trial or a license ends. The previous Terms are archived.
0.27.0PrivacyFeature
- Privacy fix: Mask names now covers everything SQL Sage sends to the AI — tool results, the conversation and your own system prompt. Before this version, names that SQL Server returned in tool results — for example the login of a blocking session, another database’s name or a data file path — reached the AI unmasked. Server, database, login, host and file names are replaced with placeholders that stay the same for the whole chat. Inline completions still send the text around the cursor unchanged.
- New Tools › SQL Sage Tools section. Check this database (free, read-only, no AI) shows what changed since your last check; Incident triage and Plan & license sit next to it.
- The panel is listed as SQL Sage in View › Other Windows.
- Paid features carry one consistent (Pro) label.
- The alternative keyboard shortcuts are called classic shortcuts.
0.26.2Fix
- Tables in chat answers show as real tables that fit the panel, instead of raw pipes and dashes.
- Names with underscores keep their underscores. Names such as
LCK_M_Xorsp_getapplockno longer turn into italics in chat answers. - Incident triage and wait statistics ignore the full SQLskills list of harmless background waits (for example
SOS_WORK_DISPATCHERon SQL Server 2019 and later), so the real waits get their true share. BEGIN TRAN,COMMIT,ROLLBACKandSAVE TRANare classed as WRITE: Run asks before executing them, and History labels them WRITE.- Screen readers announce saved chats and History filters by their text.
0.26.1Fix
- Incident triage finds the most common real blocker: an idle session that left a transaction open (for example a forgotten
BEGIN TRAN). It shows that session's last statement and how long the transaction has been open. - No more false “no blocking”. When your login lacks
VIEW SERVER STATE, the diagnostics say so and show theGRANTyou would need. On Azure SQL Database they state that only your own connection is visible. - Query Store regressions are compared per plan over Query Store intervals and ignore aborted runs (at least 5 executions).
- The health check reads fragmentation only for the 20 largest rowstore indexes and marks it as information only.
0.26.0Feature
- New SQL Sage History window — free, also after the trial. Every query you run in SSMS is kept on this computer only, encrypted for your Windows account, with the server, database, status (including the SQL Server error number of a failed run), duration, rows returned and the READ / WRITE / DDL class. Newest first, searchable with Ctrl+F. Open it from View › Other Windows or Tools › SQL Sage Tools.
- What is never saved: query results. Passwords in statements such as
CREATE LOGINare masked before saving, and error text is redacted. - Open in new window reconnects to the same server and never runs anything — running a query again is always your F5 in the editor.
- With a licence, on one history entry: Why is this slower than last time? and Prove the same rows against the query in your editor. Nothing from the history goes to the AI on its own: Why is this slower sends that one query only after you click it and see exactly what will be sent; Prove the same rows uses no AI at all.
- Entries are kept 30 days by default. You can pause recording or switch it off — switching it off deletes the saved history. See what is stored.
0.25.1Fix
- Answers start on their own line after a tool step (for example after
get_schema). Before this version, the answer could run straight into the tool line. - Saved chats keep a paragraph break where a tool ran.
0.25.0Feature
- New chat composer. A round Send button that turns into Stop while the answer streams, the model and reasoning effort in one short button at the bottom of the chat (for example
Opus · Auto), and the privacy toggles behind a shield. - A chip that always shows what leaves your computer in this turn — for example
Schema + query → Claude. - New Ask mode. The AI answers from the attached query and the chat and runs nothing on the server — that turn has no tools at all. It works with Claude Code and your own Anthropic API key; it is not available with Codex, which always loads your own MCP servers. Agent mode, the default, works as before.
- Dropdowns and SQL block actions are readable in every SSMS theme.
0.24.1Fix
- The SQL Sage panel is readable in the Dark theme and in every coloured SSMS 22 theme. Before this version, Send and Stop could show as blank white boxes, and hovering a button could put light text on a light background.
- SQL syntax colours in answers now keep at least 4.5:1 contrast on the theme’s background and follow a theme switch without restarting SSMS — including answers that are already on screen.
0.24.0FeatureSecurity
- Safer AI agents. The AI can now use only SQL Sage's own tools. Before this version:
- Codex could run with its own shell and web search next to SQL Sage's tools — it now runs read-only, without a shell of its own and without web search;
- Claude Code turns could reach beyond SQL Sage's tools — they now have no file, shell or web access of their own.
- Bounded answers. The AI stops after 12 steps or 10 minutes per answer and tells you so. Ask it to continue and it picks up where it stopped.
- Copy diagnostics. A new button builds a support report that you preview before copying. It contains no SQL, no query results, no server or database names and no keys.
- This public changelog page.
0.23.0Feature
- Explain error in one click. When a query fails, SQL Sage first shows what your database's catalog proves — the missing column and the closest real name, the foreign key or CHECK constraint behind error 547, the key columns behind a duplicate, the column size behind a truncation, the parser position of a syntax error. With a licence, the AI then explains the cause and returns a fixed query. Values the server quotes in an error message are withheld before anything is shown or sent.
- Check this database on first run — a read-only check of about 10 seconds that lists the top findings with their numbers. Free for everyone, also after the trial.
- Subscription licences now always carry an expiry date and are refreshed online, so a renewal is picked up without pasting a new key.
0.22.0FeatureSecurity
- Choose how hard the AI thinks: a reasoning-effort selector next to the model picker (only the levels your model supports) and
/effortfor a single answer. - The model list now comes live from your Claude Code installation.
- Security fixes from an external audit. Before this version:
- queries that read through a linked server or from files and external sources (
OPENQUERY,OPENROWSET,OPENDATASOURCE, four-part names) were treated as plain reads and could run without asking — they now always ask for confirmation; - results you had agreed to share with one AI provider could be sent again to another provider after you switched — they now stay withheld until you choose “Share previous results”;
- Run could execute in a different query window than the one SQL Sage opened — it now checks the window, the exact SQL, the server and the database right before executing, and otherwise runs nothing;
- the audit log recorded a Run as executed before it was attempted — it now records approval, the attempt and the outcome separately;
- saved chats were plain files — chat history is now encrypted on disk, with a “Save chats” switch and a retention setting.
- queries that read through a linked server or from files and external sources (
- Fixed chats or model-list checks that could hang when the AI CLI left a helper process running.
0.21.0FeatureFix
- SQL Sage Free after the trial. When the 30-day trial ends, SQL Sage keeps working in a free mode: the F5 execution guard, JOIN suggestions from foreign keys, Expand wildcards, Qualify object names, Format and Execute current statement — with Redgate SQL Prompt compatible shortcuts that step aside when SQL Prompt is installed. AI features and the proof and audit tools need a licence.
- New “Show impact” link in the F5 guard.
- Installer fix: the setup program Windows unpacks during installation is now signed too. Earlier installers could be blocked by Smart App Control or App Control policies with “Error 4551”.
0.20.5Fix
- AI features now consistently require an active trial or licence on every path (chat, editor commands, AI inline completion), and a trial that ends while SSMS is open takes effect without a restart. Local safety features such as the F5 execution guard keep working.
- Support for required updates: a signed notice can ask older builds to update, with a grace period first. Only builds from 0.20.5 on can be asked this way.
0.20.4Fix
- Stop now reliably ends the whole AI process tree (Claude Code and Codex). Before, stopping a turn could leave the AI CLI running in the background when it was started through a
.cmdlauncher. - A clearer model picker grouped into Recommended, Latest and Specific versions, showing which model is actually running and where the list came from.
- Claude Sonnet 5.5 with your own API key; sending a message no longer waits for the model list; stricter verification of the signed model list.
0.20.3PrivacyFeature
- Privacy fix. Before this version, read-only queries the AI ran on your tables could return row values to the AI even when you had not agreed to share results. Now, without that consent, the AI runs nothing on your data and sees only column names and types.
- Literals and parameter values in query text and execution plans captured from the server (plan cache, Query Store, live requests) are masked before they reach the AI.
- Your consent to share results is tied to the exact server and database, and resets when either changes.
- A Buy licence button in the trial banner, with a gentle reminder in the last 10 days.
0.20.2Fix
- Longer replies no longer cut off on thinking models (own API key); prompt caching for own-API-key chat.
- Inline completions never spend their budget thinking; tool descriptions state their real limits; no invented table names in completion prompts.
0.20.1Fix
- A slow or unresponsive source (the local model catalog, the CLI version check or the model policy) can no longer hold up choosing a model beyond its time budget.
0.20.0Feature
- Models follow the CLIs installed on your machine. The Codex channel reads Codex's own local model catalog, so model retirements are handled without an extension update; a clear “update Codex CLI” message when a newer model needs it; SQL Sage never switches you to a costlier model on its own.
- A “Recommended” row in the model picker, reasoning effort shown for Codex, inline completions choose their model automatically.
- Audit records now name the exact model that acted. Stricter validation of model names passed to the CLIs.
0.19.4Fix
- Model list refresh: the OpenAI (Codex) channel defaults to GPT-5.5 and offers GPT-5.6 / GPT-6; Claude Fable uses the version-independent alias; model names show relative cost instead of marketing labels.
- Fixed inline completions on the Codex channel.
0.19.3Feature
- See what is sent to the AI (schema metadata and query text), a live token-usage counter, a warning before large operations, and a guided first run. (A gap in how results were withheld was found later and fixed in 0.20.3.)
0.19.2Feature
- Evidence-first code reasoning. When reading your code, SQL Sage looks at call sites before claiming something is absent, says where to check instead of guessing a dependency it cannot resolve, and labels every claim Proven, Inferred or Unresolved.
0.19.1Feature
- Connect a repository reads your live repository through SQL Sage's own read and search tools: connecting is instant, with no size limit. Secret files are refused and secret values are redacted when they are read.
- “Connect repository” appears without a manual refresh.
0.19.0Security
- Connect a repository is hard-fenced. While a repository is connected, the assistant's own file, shell and search tools are switched off; it reaches your code only through SQL Sage's tools, which leave secret files out. (Claude channel. In this version the tools worked on a filtered snapshot of the repository; 0.19.1 replaced the snapshot with reading the live repository under the same rules.)
0.18.0Feature
- Query-tuning skill: evidence-first analysis of code and database that verifies key claims before making them, classifying findings as Proven, Inferred or Gated.
- Execution plans now show implicit conversions (and which side is converted), seek versus residual predicates, missing indexes and plan warnings. Compiled parameter values in plans are masked.
0.17.2Fix
- The extension loads across SSMS 22 builds: fixed a machine-specific load failure (assembly binding redirects), plus clear diagnostics if start-up fails.
0.17.1Fix
- The attached-query chip shows the query editor's name instead of a placeholder.
0.17.0Feature
- Connect a repository (preview, opt-in, Claude): the assistant reasons about your application code alongside the database, with secret files fenced off.
- The model list can be refreshed from a list we publish, so new Claude and ChatGPT models can appear without an extension release (since 0.20.0 the list comes from your CLIs, with a signed policy on top).
- Reliability and security hardening.
0.16.4Feature
- Lighter long chats. Older turns are compacted automatically: your recent turns and the full toolset stay verbatim, bulky older tool results become a short summary of their shape (never your row data), and safety-critical context stays pinned — your connection and any ALTER/DROP still awaiting confirmation.
- Clicking Download in the update banner now sends an anonymous download count (no identifier).
0.16.3Fix
- The chat can no longer hang: if the AI backend goes silent, a watchdog ends the turn with “The AI stopped responding — try again” (Claude and OpenAI/Codex), and New chat interrupts a stuck turn.
- The assistant follows a facts-over-guesses rule: claims about schema, plans, row counts, impact or equivalence are grounded in a real tool result, and it says so when it cannot verify something.
0.16.2Feature
- Select and copy text directly in the chat (click-drag, Ctrl+C, right-click Copy), with formatting and T-SQL highlighting preserved.
0.16.1Fix
- The “new version available” banner kept showing right after installing the latest build, because the extension reported an outdated internal version. It now reports its real version.
0.16.0Feature
- Prove-It. When a query is rewritten, one click checks that the rewrite returns the same rows as the original — a server-side fingerprint of the row multiset (order-independent, duplicate-aware) plus the logical-reads difference — and answers EQUIVALENT, DIFFERENT or UNDECIDABLE (for example with
GETDATE()orNEWID()). Read-only in a rolled-back transaction, no AI tokens, written to the local audit log. Honest limit: the proof covers your current data, not all possible data.
AI usage not included: SQL Sage needs your own AI access (Claude Code on a paid Claude plan, a ChatGPT plan that includes the Codex CLI, or your own Anthropic API key). See pricing