AI Guides › Skills & Agents
What Breaks First When An Underlying Tool Changes Its API
By Nigel Guy · 3 min read
The comforting assumption is that when a tool your skill depends on changes
its API, the skill will simply stop working and you'll notice. That's the
best-case failure. The more common one is that the skill keeps running,
reports success, and quietly acts on the wrong thing — because most API
changes don't remove access outright, they change the shape of what comes
back, and a skill built to expect one shape doesn't automatically notice
it's now reading another.
The rule: an API change usually breaks a skill quietly before it breaks
it loudly — treat a "success" response as a claim to verify, not a result
to trust, especially for anything you depend on that you don't control the
version of.
The mechanism
Roughly in order of how dangerous they are, because the dangerous ones are
the quiet ones:
- Field or parameter renames. The call still goes through; a field the
skill reads for is now empty, null, or missing, and the skill happily
proceeds with a blank or default value instead of the real one. This is
usually the quietest and most dangerous failure — everything looks like
it worked.
- Response shape changes. Nested differently, an array where there
used to be an object, a status field that means something different now
— the skill can misread this and state something confidently wrong
rather than failing to read it at all.
- Deprecation notices buried in the response. Some APIs warn you in
the payload itself before removing something. A skill that only checks
for a top-level success status will sail straight past this warning
every single time it runs.
- Auth or token scheme changes. These are comparatively the good news
— they tend to fail loudly, with a clear authentication error, which is
exactly the failure mode you want and rarely get from the others.
- Rate limit, quota, or pricing changes. The skill keeps working
functionally, but the cost or reliability profile has shifted underneath
it without anything in the output telling you so.
To defend against this:
- Pin a version where the tool lets you, so a breaking change is
something you opt into, not something that lands on you unannounced.
- Validate the shape of a response, not just whether the call
succeeded. Check that the fields you actually depend on are present
and look like what you expect, every time, not only when something
visibly goes wrong.
- Run a periodic smoke test against a known-good case, the same
discipline as testing a new skill, applied on an ongoing basis rather
than only at launch.
- Subscribe to the tool's changelog if one exists — this is worth
checking for specifically rather than assuming, since not every service
maintains one, and coverage varies a great deal by provider.
What to skip
Skip treating a green "success" status as proof nothing's changed — that's
exactly the assumption this whole failure mode exploits. And skip building
elaborate shape-validation for a tool with a genuinely stable, versioned,
well-documented API; the defence should match how volatile the specific
dependency actually is, not be applied uniformly everywhere.
Guardrails
- Which of these failure modes applies, and how often, depends entirely on
the specific tool and how it manages change — this is general shape, not
a claim about any particular API's current behaviour, which you should
check directly and expect to have moved on since this was written.
- A skill that's been stable for a long time isn't evidence the dependency
won't change tomorrow — treat stability as a streak, not a guarantee.
- Validating response shape reduces the risk of quiet failure; it doesn't
eliminate it entirely, particularly for changes subtle enough to still
match the expected shape while meaning something different.
All 751 AI guides · JulieMango plans from £17/mo