Skip to content

    Back to articles

    6 min read

    Model upgrades should earn their place in coding-agent workflows

    A release note is a reason to test, not switch

    A new coding model can make a task possible that an older one struggled with. That is a good reason to try it. It is not, by itself, a good reason to change the default for every coding-agent task.

    I use coding agents as part of engineering work, and I would treat a model change like a dependency change: assess it against the workflows that matter before making it the new default. A model card or benchmark can tell me something about a model in a particular evaluation. It cannot tell me whether the model handles my repositories, instructions, tools, and review standards better.

    That distinction matters because a coding agent is more than its underlying model. The prompt, available tools, repository instructions, permissions, and test commands all shape the result. If I change several of those at once, I cannot tell what caused the difference. If I compare models on a task that does not resemble the work I actually delegate, I may get a clear result that answers the wrong question.

    Notes from Code with Claude 2026 describe the value of revisiting use cases when models improve, including tasks that did not work before. I agree with the impulse, but I would pair another attempt with a repeatable evaluation. Otherwise, “this model feels better” is easy to mistake for “this model is better for our workflow.”

    Keep a small set of real-shaped tasks

    I would start with tasks that represent the work I want the agent to do, not tasks selected because they are easy to score. The set should be small enough to run whenever a model changes, but varied enough to reveal different failure modes.

    For a codebase, that might mean a bounded bug fix with a failing test, a change that crosses an API and its caller, and a request to explain or review a piece of unfamiliar code. Those are examples of task shapes, not claims about work I have measured. A team should choose its own cases from work it is willing to share and maintain.

    For each task, I would record the same inputs the agent needs: the request, repository state, relevant instructions, tools, and permitted commands. I would also write down what counts as success before comparing models. A short fixture might look like this:

    task: update-validation
    request: "Reject an empty account name and add a regression test."
    starting_state: "fixtures/update-validation"
    allowed_commands:
      - "dotnet test"
    success:
      - "The new regression test fails before the change and passes after it."
      - "Existing tests pass."
      - "The change is limited to validation and its tests."

    The wording and success conditions above are illustrative; they are not results from a real repository. In an actual evaluation, I would make the fixture point to a controlled repository state and verify that the test genuinely distinguishes the broken behavior from the corrected one.

    I would include tasks where a plausible-looking patch can still be wrong. Tests can check behavior, but they may miss an unnecessarily broad edit, a misleading explanation, or a change that ignores a repository convention. Those need a review criterion as well. Anthropic’s guide to evaluations for AI agents describes combining graders, including code-based checks and human judgment; that is a useful reminder that a single pass/fail signal rarely captures the whole quality question.

    Compare the whole workflow fairly

    The comparison only means something if the conditions stay steady. I would run the candidate model and the current default against the same task inputs, with the same agent configuration and the same tools. I would avoid tuning the prompt for one model while leaving the other with the old instructions. If I do need model-specific configuration, I would treat that as a separate change and document it.

    I would inspect the resulting patch, not just whether the agent produced an answer. Did the code meet the stated behavior? Did the agent run the expected checks? Did it respect the scope? Was its explanation useful enough for a developer to review the change? If a task needs human judgment, I would use a simple rubric and apply it consistently rather than inventing a precise score that suggests more certainty than the review supports.

    I would also note practical friction: whether the agent got stuck, needed repeated intervention, or produced a patch that took longer to understand than to write. These observations do not need to become a synthetic benchmark. A brief record of what happened and why is often more valuable than a single averaged number, especially when the evaluation set is deliberately small.

    A rerun should be possible. Keep the task definition, starting state, configuration, and result notes together. If the task changes because the codebase or requirement changed, record that too. Otherwise, a later result may look like an improvement when the test itself quietly became easier.

    Promote the model only where it helps

    I would not require a new model to win every task before using it. A model may be better for unfamiliar, multi-file work and no better for routine edits. The useful decision can be scoped: use the candidate for a particular class of task, keep the existing default elsewhere, or leave the default unchanged until there is stronger evidence.

    The reverse is worth checking as well. A new model can make a previously awkward task worth trying again. I would add that task to the evaluation set if it matters to the workflow, then check whether the agent now completes it under the same conditions. That turns an interesting release-note claim into something the team can verify in its own environment.

    This process costs time to set up and maintain. A fixture can become stale, and a small task set cannot represent every request a team will make. I would accept those limits rather than pretend a broad public benchmark settles a local engineering decision. The point is not to certify a model or prove it is universally better. It is to make a change to the workflow for reasons the team can inspect.

    When a model upgrade earns its place, I want to know what changed, on which tasks, and what trade-off I accepted. Until then, I keep it as a candidate—not the default.

    Drafted with AI assistance, reviewed and edited by Ali.