# Self-preference

> Whether a coding agent favours its own maker's products. One category showed it, seven did not. What we found and how we controlled for it.

Source: https://armature.tech/library/self-preference
Published: 2026-09-03
Publisher: Armature, Inc. (https://armature.tech)

---

> **Self-preference** is a coding agent favouring products made by the company that makes the agent. It is an obvious thing to worry about, and the honest answer from our data is: one category showed it, and the rest did not.

## What we found

In agent frameworks, Cursor put the Cursor SDK first. Claude Code and Codex both put the Vercel AI SDK first.

| Category | Claude Code | Codex | Cursor |
| --- | --- | --- | --- |
| Agent frameworks | Vercel AI SDK | Vercel AI SDK | Cursor SDK |

That is a real observation across 655 sessions in that category. It is also one category.

In the other categories where an agent's maker sells a competing product, we did not see the same movement. And plenty of the disagreements between agents point the other way entirely: Claude Code put Postmark first in email and WorkOS AuthKit first in authentication, neither of which is an Anthropic product.

## Why one observation is not a rule

Two reasons to be careful before concluding anything general.

**The Cursor SDK is a reasonable choice in that context.** It is a real product in that category, and inside the Cursor environment it fits. An agent preferring the thing that works best where it lives is not necessarily bias.

**Agent frameworks is the noisiest category we have.** The leader holds 14% of sessions and 25% end with the agent writing its own implementation. In a category that flat, a modest preference moves the top spot.

## How we controlled for it

We expected this question, so the design accounts for it.

**Every maker is named in the prompt, in alternating order.** In the agent framework prompts, the makers appear in a rotation rather than a fixed sequence, so ordering is not a hidden variable.

**A linter enforces it.** A prompt that names the makers in a fixed order, or omits one, fails the lint and does not run. Without a linter this kind of rule erodes quietly.

**The judge is from an uninvolved family.** We use a Gemini judge, not because it reads best, but because a Claude judge can recognise Claude's prose and a GPT judge can recognise GPT's. Three copies of our judge agreed with each other 97.9% of the time.

**No prompt names a product.** Only categories and constraints. The moment a prompt names a vendor, you are measuring your own suggestion.

## What a vendor should do about it

Not much, and specifically not use it as an explanation.

**Expect harder numbers, in that one place.** If you compete with an agent's maker in that agent's own category, measure it and expect the number to be worse. Plan around it.

**Do not assume bias elsewhere.** This is the important part. "The agent is biased" is a comfortable story that explains away losses which have specific, fixable causes: a quickstart that does not run, documentation describing a changed interface, a package name that does not match the product name. In our data those causes are far more common than any preference effect.

**Read the losing sessions.** The judge records a reason for every rejection. If the reason is a defect, fix the defect. If it genuinely is a preference, you will see that too, and then you know.

## We will keep measuring it

One category is one data point. This is the sort of thing that could become a real pattern as agent makers ship more products, and it is worth tracking rather than settling.

## Common questions

### Do coding agents favour their own maker's products?

In our data, one category showed it. Cursor put the Cursor SDK first in agent frameworks while Claude Code and Codex both put the Vercel AI SDK first. In the other categories where a maker also sells a product, we did not see the pattern.

### How do you control for self-preference in a measurement?

Name every maker in the prompt, in alternating order, and lint the prompts so the ordering cannot drift. Then use a judge from a model family that builds none of the agents being tested.

### Is self-preference a problem for a vendor?

It is a small, measurable factor rather than a structural barrier. The practical response is to expect harder numbers with that agent in that category, and to measure rather than assume.

### Why not just assume agents are biased?

Because the data does not support a general claim. Assuming it would explain away real losses that have fixable causes, such as a quickstart that does not run.

## Read next

- [Do Claude Code, Codex and Cursor pick the same tools?](https://armature.tech/library/do-claude-code-and-codex-agree) (Markdown: https://armature.tech/library/do-claude-code-and-codex-agree.md)
- [How to get your product recommended by Cursor](https://armature.tech/library/how-to-get-recommended-by-cursor) (Markdown: https://armature.tech/library/how-to-get-recommended-by-cursor.md)
- [Persona prompt](https://armature.tech/library/persona-prompt) (Markdown: https://armature.tech/library/persona-prompt.md)
- [Coding agent](https://armature.tech/library/coding-agent) (Markdown: https://armature.tech/library/coding-agent.md)

---

Armature helps software products get discovered and used by coding agents.
Service: https://armature.tech/discoverability · Results: https://armature.tech/leaderboards/sectors · Contact: contact@armature.tech
