Applications and Integration·Task 2.6·Bloom: understand·Difficulty 2/5·7 min read·Updated 2026-07-12

Model Version Pinning for the Claude Developer Exam

Configuration Management (4.1%): Configuration management for Claude system components, including CLAUDE.md files, settings.json, model version pinning, prompt versioning, and plugin dependencies.

SUBy Solomon UdohReviewed by Solomon UdohAI-assisted · human-reviewed
In short
Model version pinning is specifying a fixed model version so an application behaves the same across deployments. Because a model update can change behavior, pinning keeps outputs stable until you deliberately upgrade, and each upgrade is treated as a change to be revalidated with evals. An unpinned model can shift its outputs without any change to your code, which breaks reproducibility.

Why pin a model version

Configuration management is about making a system's behavior deliberate and reproducible, and the model your application calls is one of the most consequential pieces of configuration you set. Model version pinning is the practice of specifying a fixed model version so the application behaves the same way across deployments. Instead of asking for "the latest" and accepting whatever that resolves to, you pin an exact version and get the same behavior every time you deploy. The Claude Certified Developer - Foundations (CCDV-F) exam covers this under Task Statement 2.6, Configuration Management, at understand level.

Pinning is part of the same discipline as the rest of Task Statement 2.6. Just as CLAUDE.md and settings.json configuration makes standards and operational behavior explicit and shared, model pinning makes the model explicit and stable. And it slots into the broader release picture described in prompt versioning and plugin dependencies, where the model, prompt, and plugin versions are tied together into one coherent, reproducible release.

Model version pinning
Specifying a fixed model version so an application's behavior stays stable across deployments. Behavior changes only when you deliberately upgrade the pin, and each upgrade is revalidated with evals before it ships.

Reproducibility is the payoff

The core reason to pin is reproducibility. A pinned model version keeps behavior stable across deployments: the outputs you validated last week are the outputs you get this week, because the model producing them has not changed underneath you. That stability is what lets you reason about your application at all. If the model can shift at any moment, then every behavior you observed yesterday is only provisionally true, and you can never be sure whether a change in output came from your own code or from the model quietly moving.

That is exactly the failure an unpinned model creates. An unpinned model can shift its outputs without any change to your code, because an upstream model update changes what "the latest" resolves to. Nothing in your repository changed, yet the application now answers differently, formats differently, or makes different tool-use decisions. The exam wants you to recognise that this is a reproducibility break: the same inputs no longer reliably produce the same behavior, and the cause is configuration you left unfixed rather than a bug you introduced.

pinned
stable behavior across deployments
deliberate
how upgrades are made
evals
how an upgrade is revalidated

Upgrades are deliberate, and revalidated with evals

Pinning does not mean freezing forever. Models improve, and you will want to move to a newer version. The point of pinning is that the move becomes a deliberate decision rather than something that happens to you. Because a model update can change behavior, an upgrade is treated as exactly what it is: a change. And like any change that can alter behavior, it is revalidated with evals before it reaches production.

This is the piece candidates most often drop. It is not enough to pin and then, when upgrading, simply bump the version and ship. A newer model can behave differently on your specific prompts and tasks even when it is better on average, so you rerun your evaluation suite against the new version to confirm the behavior you depend on still holds. Only then does the upgrade go out. Pinning gives you the control; evals are how you exercise that control responsibly. Together they turn model changes from surprises into managed, verified transitions.

Pinned model lifecycle
Loading diagram...
Pinning holds behavior stable; an upgrade is a deliberate step gated by evals before the pin moves.

What the exam tests you on

Model pinning sits in Domain 2, Applications and Integration, the highest-weighted domain on the CCDV-F exam at roughly 33 percent, and it is assessed at understand level. Two traps recur, and they are mirror images of each other.

The first trap is leaving the model unpinned and being surprised when behavior changes after an upstream release. Any scenario where an application's outputs shift with no code change, and the model was requested as "latest" rather than a fixed version, is exhibiting this fault. The fix is to pin the version so behavior is stable and changes only when you choose.

The second trap is upgrading a pinned model without rerunning evals. Pinning is only half the discipline; the other half is validating each upgrade. A team that bumps to a new model version and ships without re-evaluating has surrendered the very reproducibility that pinning was meant to protect, because they cannot be sure the new model still behaves as their application requires. The correct instinct is to gate every model upgrade behind an eval pass.

Misconception

I always request the latest model so my application automatically benefits from improvements.

What's actually true

An unpinned 'latest' model can shift its outputs whenever an upstream release changes what 'latest' resolves to, so your application's behavior can change with no code change on your side. Pinning an exact version keeps behavior stable and reproducible, and lets you adopt improvements deliberately after validating them.

Misconception

Once I decide to upgrade, I can just bump the model version and deploy, since a newer model is better.

What's actually true

A model update can change behavior on your specific prompts even when it is better on average, so an upgrade is a change that must be revalidated with evals before it ships. Bumping the pin without rerunning your evaluation suite abandons the reproducibility guarantee pinning gives you.

Worked example

Worked example

A team runs a classification service against 'the latest' Claude model, then tightens its configuration.

The service asks for the newest model rather than a fixed version. For weeks it works well. Then, after an upstream release, its classification labels start coming back in a slightly different format and a few edge cases flip category. The team burns a day hunting for a code regression that does not exist: nothing in their repository changed. The cause was the unpinned model resolving to a newer version whose behavior differed on their exact prompts.

They fix it in two steps. First, they pin an exact model version, so from now on the service's behavior is stable across deployments and cannot move without a change they make on purpose. Second, they establish that any future upgrade runs through their eval suite before shipping: when a newer model becomes attractive, they point their evaluations at it, confirm the classification behavior still holds, and only then move the pin. Model changes are now deliberate and verified rather than surprises discovered in production.

This is precisely the understand-level judgment Task Statement 2.6 tests: pin for reproducibility, and gate every upgrade behind evals.

How it shows up on the exam

Questions usually describe behavior that changed without a code change and ask for the cause, where the answer is an unpinned model that moved after an upstream release, or they describe a team upgrading and ask what step is missing, where the answer is rerunning evals. Hold the pairing in mind: pinning buys stability, and evals are how you spend a deliberate upgrade safely. An application that does both keeps its behavior reproducible and its improvements verified.

Model pinning rarely stands alone. It is one strand of the same release discipline as prompt versioning and plugin dependencies, and it rests on the configuration foundations in CLAUDE.md and settings.json configuration.

Check your understanding

A team decides to upgrade their production application from a pinned Claude model to a newer version. What is the essential step before shipping the upgrade?

People also ask

What is model version pinning?
It is specifying a fixed model version so the application behaves the same across deployments, keeping outputs stable until you deliberately upgrade rather than letting the model shift underneath you.
Why can an unpinned model change your outputs without a code change?
An unpinned request for the latest model resolves to whatever the newest version is, so when an upstream release ships, the resolved model changes and can produce different outputs even though your code is untouched. That breaks reproducibility.
Do you need to rerun evals after upgrading a pinned model?
Yes. A model update can change behavior, so an upgrade is a deliberate change that should be revalidated with evals before it reaches production. Bumping the pin and shipping without re-evaluating is a common mistake.

Watch and learn

Official Anthropic Academy lessons first, then hand-picked walkthroughs. Videos load only when you press play.

No videos curated for this concept yet

We are still curating the best official and community videos for this topic.

References & primary sources

Adaptive study

Master this concept with Archie

Practice it inside an adaptive study session. Archie, your Socratic AI tutor, tracks your mastery with Bayesian Knowledge Tracing and schedules the perfect next review.

Start studying