Your AI Worker Changed Overnight — and Nobody Touched Your Code
· AgenticLabs India
· AgenticLabs India
An AI worker can start answering differently without anyone on your side touching it. Two small habits — a pinned version and a weekly canary set — watch for the change, so a customer complaint isn't how you find out.
Picture a shop owner whose enquiry bot has answered price, stock, and delivery timing questions well for months. One Monday, the answers get thinner. A regular customer is told an item is out of stock when it is on the shelf. Another gets a delivery window the shop never offered. Nobody on the shop's side changed anything — no new prompt, no new documents, no new settings. The bot simply started behaving differently, and the shop heard about it from a customer, not from any alert.
This is a real failure class, and it has a cause most owners never suspect: the company supplying the AI changed something on its side. Your AI worker is not a machine you bought and installed. It is a service running on someone else's computers, and the part that answers your customers can move without your permission. This post explains how that happens, why your usual dashboards will not warn you, and the two small habits that catch it early: pinning the version, and running a weekly canary set — twenty questions to start, fewer if that is all your shop has — that you already know the answers to.
The clearest public example comes from Anthropic's April 2026 postmortem, as reported. Over about six weeks, developers using the company's coding assistant noticed its answers getting worse, while the underlying model weights never changed. The cause, per the postmortem coverage, was three product-layer changes made on the vendor's side during March–April 2026, resolved in April 2026. The reports differ on exact dates, mechanisms, and the final fix version, which is itself the lesson: even the people watching closely could not agree afterwards on exactly what moved, because the moving parts were on the vendor's side of the wall. (Quality Clouds, Claude AI News, Septim Labs)
The same risk applies to the enquiry bot in your shop, in three ordinary forms. (Dev.to, Dev.to)
| Vendor-side change | What you observe |
|---|---|
| Provider updates the model behind the same endpoint name | The name you call stays the same while the behaviour behind it shifts |
| Generic "latest" endpoint | The provider changes what serves your requests on its own schedule |
| Routing to a different model during busy periods or failovers | A normal success response, from a different model |
None of this requires a villain. Providers improve their products constantly; a change that helps most customers can quietly hurt your specific setup. The point is structural: when the intelligence lives on someone else's servers, "we changed nothing" is not a defence. Something changed — just not on your side.
The natural reaction is: surely something would alert us. Usually, nothing does. A swapped or changed model still returns fast, successful responses within token budget, so latency, HTTP status, and error rates can all stay green while answer quality drops. (Dev.to) The failure is in the shape of the output, not in the infrastructure, and infrastructure dashboards measure infrastructure. Coverage of the Claude episode makes the same point about status pages: the status page stayed green while output quality degraded. (Septim Labs)
The same blindness applies to document search. If the embedding model behind your bot's document search updates, new question vectors no longer match the vectors stored in your index, and answer quality degrades while latency, throughput, and error-rate dashboards stay green. The bot still answers confidently. It just starts pulling the wrong paragraph. (Bigyan, Tianpan)
Green dashboards prove the system is running. They do not prove the answers are still right. Only checking the answers themselves proves that.
Practitioners name two mitigations, and both are small routines, not big projects. The first is version pinning: use an explicit model version instead of an alias wherever your vendor offers one, and if your vendor does not offer it, ask — pinning is a question to put to a vendor, not a feature to assume. The second is a scheduled eval run: run your test set against your production prompts on a weekly schedule, precisely because providers change behaviour without you changing any code, and treat a question that fails two weeks running against a still-correct key as your signal that something moved. (CloudRPS, Dev.to, Future Proof Technology)
The loop these habits come from is the one evaluation guides describe: a fixed set of real test cases, re-scored on a schedule and whenever something changes, and every production failure converted into a permanent regression case so the same failure cannot return unnoticed. Bigger teams also score a sample of live traffic; your canary set is the small-business version of the fixed-set half of that loop — the same discipline, sized to one weekly run. (Future Proof Technology, ContextQA)
Start small, as the guides advise: 20 to 50 real cases drawn from real requests, not invented ones. Guides also advise checking the steps the bot took — which tools it called, in what order, how many steps — with simple checks before reaching for anything fancier. Those checks need the bot to show its work; where yours doesn't, your canary deliberately checks something simpler and still useful: whether the final answer is right. A small set you have read carefully is worth more than a large generated set nobody has checked. (Programming Line, Future Proof Technology)
Here is the build. A canary set starts as twenty questions your customers actually ask — fewer if that is all your shop has — with the correct answers written down by you. Once a week, you run the questions in your set through your bot and compare. If the answers match, your worker is behaving on these questions. If the same question fails two weeks running against a still-correct key, you have a pattern worth working through the failure steps below — the re-run there confirms it before you escalate. Your own weekly checks are watching for it, rather than leaving discovery to a customer complaint. Set aside one sitting to build it.
Copy this template into your document to log each run. Copy the correct answers from your answer key into the log each week; never rewrite them from memory, or the key itself drifts. Diagnostic (out-of-cycle) runs are logged separately, under a 'Diagnostic runs' heading with the date, the question, and the bot's answer, and never touch the Fails in a row column. Confirmation re-runs inside the failure steps are not diagnostic runs — they move the fail count as their step directs. Mark known-open cases in the Status column by writing 'known-open' there, and note a question's real-world failure history there as well (e.g. 'failed live before joining'); mark a question awaiting a vendor reply on an escalation or re-escalation as 'awaiting vendor reply' there, so the prune exemption for a no-reply wait is checkable from the log; leave it blank otherwise. Add a row whenever the set grows past twenty.
CANARY RUN — week of: __________
Bot / model version on record: __________
Pinning status (pinned version / unavailable): __________
Previous pinned version (if changed): __________
Test channel (test mode / live chat; note 'test messages' if live): __________
Vendor notification method on record: __________
Question | Correct answer | Bot's answer | Pass / Fail | Fails in a row | Status
1. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
2. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
3. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
4. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
5. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
6. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
7. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
8. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
9. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
10. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
11. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
12. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
13. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
14. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
15. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
16. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
17. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
18. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
19. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
20. [your most-asked question] | [correct answer] | __________ | ___ | ___ | ___
Fails this week: ___ / ___ (questions in set)
Action (if any question meets a failure-step trigger; known-open rows only on a re-escalation trigger): __________The vendor message used in step 4 of the failure steps below is this — fill in the bracketed parts from your canary log. If your record says 'pinning unavailable', delete the final line before sending.
Hi, our enquiry bot's answers have changed on a question that used to be
correct. The question is: "[paste the question]".
The correct answer is: "[paste your answer-key answer]".
The bot now answers: "[paste the bot's answer]".
This answer failed two weeks running, and failed again on re-run.
Version on record: "[paste the pinned version from your answer key, or
'pinning unavailable' if that is what your record says]".
Which model version are we running now?
If a pinned version exists, please restore the version on record.For a week-one setup problem (not a drift case), use this shorter message instead:
Hi, our enquiry bot has not answered this question correctly in our checks.
The question is: "[paste the question]".
The correct answer is: "[paste your answer-key answer]".
The bot answers: "[paste the bot's answer]".
Please advise what needs to change on our side or yours.For a non-version finding (the version did not move), use this message instead:
Hi, our enquiry bot is answering this question wrong although the model
version has not changed. The question is: "[paste the question]".
The correct answer is: "[paste your answer-key answer]".
The bot answers: "[paste the bot's answer]".
The document behind the answer is: "[paste the document name]".
What I found: "[paste the specific finding — which document is wrong, or what the bot pulled instead]".
Please advise what needs to change in the prompt, document, or retrieval.That is the whole system. A canary set to start, one sitting to build, one short run a week. It is the small-business version of the production-hardening discipline described on our MLOps, Evals & Production Hardening page — measured, not guessed.
This section applies when a question has failed two weeks running, except a question marked as a known-open case that has not met a re-escalation trigger. A single fail on a previously passing question is a curiosity, not a case — wait for the repeat before working these steps.
Because the launch test certified the bot as it was on launch day. The model, harness, and retrieval behind it can change on the vendor's schedule afterwards, and none of those changes re-run your launch test for you. The weekly canary is the re-run.
A fixed set of five would still compare week to week, but five questions cover too little of what customers actually ask to be a useful early warning — and five is below the recommended 20 to 50 range. For a shop with twenty real questions, twenty is the floor of that range: small enough to run weekly, large enough to catch drift. Starting below twenty while real questions arrive is a ramp, not a destination — a permanent set of five, chosen when twenty real questions exist, is not acceptable.
Then the canary set matters more, not less — it becomes your main early warning. Ask the vendor how they notify customers of model changes, and keep the weekly run. A vendor that cannot pin and cannot notify is a risk to weigh at renewal time.
Partly. If a price in your documents changed and nobody updated it, the canary question on that price will fail — which is useful. But stale documents deserve their own check, because the canary only covers the questions you chose.
No. A general weekly check looks over the bot's recent behaviour more broadly. The canary set is narrower and fixed: the same set, every week, compared against answers you wrote down in advance — the set grows only as real questions arrive or real failures show a gap, never by inventing questions. The fixed comparison is what makes drift visible.
Book a free consultation. We'll show you which of your workflows AI can take over first.