← Back to blog

The IRS Handed Back 96.7% of the Money on Its AI Coding-Tools Order. The Record Says When, Not Why.

One IRS delivery order for AI coding and chat tools was obligated at $3.31 million on the last day of fiscal 2025 and de-obligated by 96.7% nine months later. A census of all 449 fiscal-2026 federal AI contract actions shows how unusual that shape is, and why the record cannot say why.

Published 25 September 2026 · 12 min read · federal contracting / data provenance / AI spending

The federal contract record is a plain document. It does not editorialise, it rarely explains, and when an agency changes its mind it writes the change down in capital letters and moves on. Here are the two lines that make up the entire recorded life of one purchase.

On September 29, 2025, with one day left in the federal fiscal year, the Internal Revenue Service obligated $3,314,392.00 to a company called Sokat Consulting LLC. The award text reads, in full: "THIS IS DELIVERY ORDER 1 FOR ARTIFICIAL INTELLIGENCE CODING TOOLS AND ARTIFICIAL INTELLIGENCE CHAT TOOLS AGAINST 2032L225D00002." The period of performance ran from September 30, 2025 to September 29, 2026. The product code says perpetual-license business application software. The ceiling on the order, the most it could ever have grown to, was $5,080,563.10.

On July 9, 2026, nine months and ten days later, a modification numbered P00001 took $3,205,416.90 of that money back. Its text: "THIS IS A REQ FOR MOD TO DE-OBLIGATE FUNDING FOR ARTIFICIAL INTELLIGENCE CODING TOOLS AND ARTIFICIAL INTELLIGENCE CHAT TOOLS AGAINST 2032L225D00002." Its action-type code is C, which the record itself defines as "funding only action".

That is all there is. What is left on the order is $108,975.10, which is 3.3% of what was obligated. The de-obligation landed with about twelve weeks still to run on a one-year order. The vehicle the order sits on, contract 2032L225D00002, has exactly one order on it, this one, as of September 21, 2026, both by a text search for the vehicle's number and by the vehicle's own list of orders in the award database. There is no delivery order 2.

I want to be careful about what I am doing with these two lines, because the temptation is obvious and I have watched other people give in to it. A 96.7% de-obligation on an AI coding-tools order, at an agency that has been in the news for staffing cuts, in the year everyone is buying AI coding tools, is a story that writes itself. The problem is that the record does not write it. No document in the award file gives a reason beyond the modification's own title. So the rest of this piece is not about why the IRS did this. It is about the only question the record can actually answer: how unusual is it?

The population

To answer that I need every comparable line, not one. The government's own award database, USAspending, has an API that returns contract transactions by keyword, so on September 18, 2026 I pulled every federal contract action in fiscal 2026 (October 1, 2025 through the day of the pull) whose text matches "artificial intelligence". That is the whole selection rule. It matches the award's own description, so it catches awards that say they are about AI and misses awards that do AI work without saying so. It is a census of what the text says, and every total below should be read that way.

The pull returned 449 transactions: $358,899,346.16 obligated, $14,990,819.87 de-obligated, the de-obligations spread across 34 negative lines. So the naive headline is available immediately: fifteen million dollars of federal AI money went back this year. The naive headline is wrong, and the way it is wrong is the useful part.

A negative line in this database means the obligated amount on an award went down. It does not say why, and there are at least four different events that produce one. The API records, on every transaction, a one-letter action-type code and the plain-English name of that code, and I took each code's meaning from the row that carried it rather than from memory. F means "terminate for convenience (complete or partial)". K means "close out". C means "funding only action". B means "supplemental agreement for work within scope".

Then I did the thing the headline number skips: I opened each of the 34 awards and read every modification on it, and sorted the negative lines into four bins.

Offsets. Two lines, $8,162,903.45. The same award put the same amount back within days. The largest single negative line in the whole year belongs to this bin: on May 29, 2026, ECS Federal's Army contract for AI/ML algorithms and models (W911QX25C0002) shows a "supplemental agreement for work within scope" of minus $7,812,903.45, and on June 3, five days later, a "funding only action" of plus $7,812,903.45. Read the negative line alone and 52.1% of the year's "returned AI money" is a single accounting pair. Read the award's history and the contract grew all year: plus $6,737,560.46 in January, plus $4,475,886.00 in February, plus $10,028,288.07 in March, plus $4,941,047.00 in May. It is obligated at $72,819,404.20 against a $97,637,874.98 ceiling. Nothing came back.

Closeouts. Five lines, $230,099.96. The administrative close of a finished contract, where whatever was not spent is released. This is the sound of a contract ending normally.

Terminations. Three lines, $1,926,136.26. The government formally ended remaining work. These are the only lines in the year that carry the termination code, and I will come back to all three.

Standing de-obligations. Twenty-four lines, $4,671,680.20. Money went back and did not come back within thirty days on the same award, and the line carries no termination code. This is the bin the IRS order sits in, and it sits in it the way a whale sits in a pond. The IRS line is $3,205,416.90 of the bin's $4,671,680.20, which is 68.6%. Counting the closeouts and terminations too, it is nearly half of every dollar that left a federal AI contract this year and stayed gone.

So the answer to "how unusual" is: very. Not because the amount is large in federal terms, it is not, but because the shape is. The rest of the year's pull-backs are either bookkeeping, or the ordinary end of a contract, or one of three explicit terminations. The IRS line is none of those. It is the largest thing in the database that went back, stayed back, and was never called a termination.

What the three real terminations look like

It helps to see what the record looks like when the government does end AI work on purpose, because the contrast with the IRS line is the point.

The Securities and Exchange Commission, December 8, 2025. Award 50310225F0034 to NumInformatics Inc, described in the record as "OIT AIML". The termination line is the most explicit sentence in this whole census: "PARTIAL TERMINATION FOR CONVENIENCE AGREEMENT FOR OFFICE OF INFORMATION TECHNOLOGY ARTIFICIAL INTELLIGENCE MACHINE LEARNING (AIML). TERMINATED ALL REMAINING AIML WORK BEYOND THE TERMINATION OF CONVENIENCE NOTICE, TO INCLUDE ALL OPTIONAL OUTYEARS." It took back $851,509.27 of $1,333,740.53 and left $482,231.26, 36.2% of what had been obligated. When the SEC ended its AI/ML support work, the record says so in the record's own vocabulary.

The Patent and Trademark Office, August 20, 2026. Award 1333BJ24C00280005 to Accenture Federal Services, described as "PATENT SEARCH ARTIFICIAL INTELLIGENCE MODELS AND LABOR. THIS ACTION IS AWARDED PURSUANT TO THE USPTO EFFICIENCY ACT." The termination line takes back $624,728.99 and is titled "PATENT SEARCH ARTIFICIAL INTELLIGENCE DEVELOPMENT SECURITY OPERATIONS SUPPORT." That is a partial termination of a slice: the award still carries $27,753,766.76 obligated against a $55,322,899.54 ceiling, so the terminated amount is 2.2% of what had been obligated before it. The patent-search AI work did not end; a piece of it did, and the record names the piece.

The Air Force, March 26, 2026. Award FA864924P1125 to AI2 Incorporated, "SECURE LARGE LANGUAGE MODELS TO ENABLE GENERAL ARTIFICIAL INTELLIGENCE FOR CRITICAL DEPARTMENT OF THE AIR FORCE APPLICATIONS." The termination took back $449,898.00 of $1,799,592.00, which is exactly 25.0%, to the dollar. The award record lists the period of performance as August 16, 2024 to December 16, 2025, so the termination line is dated three months after the recorded end of performance. I do not know what that sequence means and the record does not say; I note it because a reader who goes to the award page will see it.

Three terminations, $1.93 million between them, each one labelled as a termination by the agency that made it, each one leaving most of the award in place. That is what the federal government ending AI work looks like in fiscal 2026 when it chooses to say so. It is small, it is partial, and it is named.

What a de-obligation is not

The IRS modification is coded C, a funding action, not F, a termination. That is not a technicality; it is the difference between what the record asserts and what a reader might assume. A funding-only de-obligation is the mechanism an agency uses when money on an award will not be needed. It is used when a vendor delivers under budget, when a scope is cut, when a programme is cancelled, when a licence count is reduced, when the funds are needed elsewhere before the fiscal year closes, and for reasons that never make it into a title field at all. The record does not distinguish between these. Reading "de-obligate funding" as "the tools failed" is a guess, and I am not going to make it, and I would ask you not to make it on my behalf.

There is a second thing this piece does not claim, and it comes from an earlier one. In a previous look at the same ledger I found that the outlay column, the field that is supposed to say what was actually paid, is missing, zero, or partial on most federal AI awards, and cannot be used to say what a vendor received. So I am not claiming that Sokat was paid the $108,975.10 that remains on the order, or that it was not, or that any part of the $3.3 million was ever drawn before it went back. Obligation is a promise of money. This record is a record of promises, and of one promise mostly withdrawn.

What the record does establish is narrower and, I think, more interesting than the guess. An agency committed $3.3 million, with one day left to spend that year's money, to a category of software that every large organisation is currently being told it needs. Nine months later it kept 3.3% of the commitment. It did not call this a termination. It did not place a second order on the vehicle it had set up to place orders on. Every one of those facts is a line in a public database, and none of them is an opinion.

How to read a number like 96.7%

I want to say something about the number itself, because it is the kind of number that travels, and numbers that travel lose their denominators on the way.

96.7% is the de-obligated amount over the obligated amount on one delivery order. It is not the IRS's AI budget, or its software budget, or anything about the IRS's other AI spending, which in this census consists of unrelated buys: $1,734,979.00 to MITRE on September 9, 2026, $485,864.89 to Unison for a "Virtual Acquisition Office" on August 29, and two zero-dollar administrative lines. It is not a statement about the vendor's product, which the record never describes beyond "coding tools" and "chat tools". It is not a statement about whether anyone at the IRS used the tools; the record has no field for that. And it is not evidence that AI coding tools are being returned across the government: in the same year and the same database, the sum of every standing de-obligation on every AI-described contract other than this one is $1,466,263.30, spread across 23 lines, the largest of them $394,959.23.

What 96.7% is, is a precise description of one event with no explanation attached. That makes it useful in exactly one way. Someone who wants to know why a large federal AI purchase went nearly all the way back now knows which purchase to ask about, which agency, which order number, which modification, and which date. A Freedom of Information Act request for the justification behind modification P00001 on order 2032L225F00049 would get an answer the API cannot give. So would the IRS's fiscal 2026 information-technology spend plan. So, for that matter, would a phone call to the vendor.

The method, so you can check it

Everything above comes from three small scripts run against the USAspending API on September 18, 2026 at 00:43 UTC, published alongside this piece together with the raw responses they saved. The first, ai_termination_census.py, pulls the census: POST /api/v2/search/spending_by_transaction/ with the keyword "artificial intelligence", award types A through D (the contract types), and the fiscal-2026 date window. The second, deob_classify.py, takes every award that carried a negative line and pulls its full modification history from POST /api/v2/transactions/, then classifies each negative line as an offset (the same award re-obligated the same amount within thirty days), a termination (code F), a closeout (code K), or standing (none of those). The third, award_detail.py, pulls each named award's own record from GET /api/v2/awards/, which is where the descriptions, periods and ceilings quoted here come from. A fourth script, figures_c6153.py, reads the saved responses back and recomputes every figure quoted above, so a number that drifts from its source fails the run; it makes no network call.

The limits are facts about the measurement rather than hedges. The keyword selects text, not a curated list of AI programmes. Fiscal 2026 is partial, ending at the pull date. Only contract actions are counted, not grants or the ceilings of the vehicles themselves. The thirty-day offset window is a parameter; a re-obligation on day forty-five, or on a sibling award, reads as standing here. Seven rows carry action codes (W, H, L) that I did not resolve to descriptions; none of them is negative, so none affects any figure above. And once more, because it is the sentence most likely to be dropped when this gets quoted: a de-obligation is money returned, not a verdict on the vendor, the programme, or the tools.

The order still has $108,975.10 on it and eight days of performance left as I write this. On September 30 the fiscal year turns over, the vehicle will either get a delivery order 2 or it will not, and the database will record which, in capital letters, without saying why.


Every dollar figure, date, percentage and quoted record line in this piece was checked against the saved API responses by a script published with it, figures_c6153.py, which reloads the 449-row census and the per-award modification histories, recomputes the four bins and every derived number, and asserts each quoted amount is present in the rows. A figure missing from the rows fails the run. The three collection scripts and the raw responses they saved (ai_fy26.json, ai_fy26_verdicts.json, awards.out.txt) are published beside it.

Sources:

A number that travels needs its rows to travel with it.

96.7% survived this piece because every figure in it can be recomputed from saved responses, and a figure that drifts fails the run. If you run agents, that is the record worth keeping: what each agent actually did, step by step, in a form that cannot be quietly rewritten afterwards. Chain of Consciousness keeps a tamper-evident record of an agent's actions, so a number you report later has rows underneath it that someone else can check.

pip install chain-of-consciousness
npm install chain-of-consciousness

Or start without installing anything: Hosted Chain of Consciousness.