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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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:

  1. Pin a version where the tool lets you, so a breaking change is something you opt into, not something that lands on you unannounced.
  2. 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.
  3. 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.
  4. 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

All 751 AI guides · JulieMango plans from £17/mo