Undercut for Warp

Warp's Agent Mode already reads an AGENTS.md. Give it one that stops overpaying.

Undercut is a free, MIT-licensed routing policy you drop into the project AGENTS.md (or WARP.md) that Warp's Agent Mode reads automatically — cheap tier first, escalate only on evidence, never on a vibe. Warp has no built-in per-task cost dial of its own to compare against; this exists because the same overpay-by-default pattern we measured elsewhere in the agent ecosystem (see the Claude Code page) shows up anywhere an agent defaults every task to its strongest model.

Install for Warp See the benchmarks
Works anywhere a routing policy can be read
Claude Code Codex Cursor Copilot OpenCode Gemini CLI Warp

How this maps onto Warp

AGENTS.md (or WARP.md) is Warp's documented rules mechanism.

Per Warp's own rules documentation, Agent Mode automatically applies a project rules file — either AGENTS.md (the name Warp recommends for new projects) or the legacy WARP.md, with the filename required in all caps — from both your project's root directory and, on a best-effort basis, the current working subdirectory. When a rules file exists at more than one level, Warp's documented precedence is: the current subdirectory's rules first, then the root directory's rules, then your account's Global Rules (set separately, in Warp Drive > Personal > Rules). That's a real, first-class discovery mechanism — not a workaround — so Undercut's policy drops straight into it the same way it drops into CLAUDE.md or AGENTS.md for other clients.

Undercut's tier names — cheap, standard, frontier, apex — are generic on purpose. models.md gives the rule of thumb rather than a fixed slug for Warp specifically: Warp is model-agnostic, letting you pick from several providers per session, so cheap maps to the smallest/fastest model in whichever family you've selected, standard to the default work model, frontier to the highest-reasoning production model, and apex is reserved for the single batched tie-break call when the ladder is exhausted.

Nothing about this sits between Warp and your model provider. It's plain markdown text Warp reads into context automatically, same as any other project rules — no proxy, no network hop, nothing to route around if you remove the block.

Install for Warp

Free. MIT. Nothing installs, nothing proxies your traffic.

Option 1 — append to project AGENTS.md (recommended, confirmed path)

Run this from the repo root. Warp reads an AGENTS.md (or WARP.md) file at the project root automatically, so appending the policy text there is the most reliable way to get it in front of Agent Mode.

$ curl -fsSL https://raw.githubusercontent.com/undercutsh/firstpass/main/skills/firstpass/SKILL.md >> AGENTS.md

Option 2 — add it as a Global Rule

Open Warp Drive > Personal > Rules (or the command palette's "Open AI Rules"), paste in skills/firstpass/SKILL.md, and save. Global Rules apply across every project by default — useful if you want the policy everywhere without touching individual repos — but per Warp's documented precedence, any project-level AGENTS.md/WARP.md in a given repo takes priority over it, so a project file with a conflicting instruction wins.

What's still unverified: we have not independently confirmed whether Warp's own /init slash command or the generic npx skills add undercutsh/firstpass CLI (referenced on the main site) write to a location Warp actually reads — Warp's rules mechanism is AGENTS.md/WARP.md and Global Rules, not a documented SKILL.md discovery path the way Gemini CLI or OpenCode have. Use Option 1 or Option 2 above, both directly confirmed against Warp's own docs.

Validate it yourself

  1. 1Read the published results — testing/README.md and the raw JSON in testing/results/
  2. 2Reproduce for free, no API key, no spend: node src/main.js --mock
  3. 3Run live with whichever model provider you've selected inside Warp — a single-vendor smoke test is pennies

Zero lock-in. It's markdown text Warp reads — delete the block and you're back to status quo.

How it works

The Undercut Rubric · v1

Six flags assign a tier. Three triggers are the only way up.

This is a named, versioned spec — not internal logic we could quietly change. When the rubric changes (a new flag, a different cap), the version number moves and the changelog says why.

Every unit of work gets scored against six flags, then assigned the cheapest tier that can plausibly handle it. It only moves up a tier when something objective proves it needs to — a failed check, a measured disagreement, an explicit uncertainty flag. It never moves up on a guess, and it never moves back down mid-task.

unit of work
6-flag rubric
0 flags
cheap~90% of units land here ✓
1–2
standard
3+/own
frontier
↑ escalate +1 tier only on: fail ×2 · two runs disagree · tagged "uncertain" residue only — never redoes the batch
See the rubric

Step 1 — Base tier, six-flag rubric

Unverifiable — can output be checked mechanically? (tests, schema, diff, grep)
Ambiguous — one right answer, or several defensible ones?
Blast — reversible? touches money, auth, user data, production, deletes?
Cross-cutting — one file/source, or reasoning across many?
Novel — pattern-following, or genuinely new design?
Format-strict — must output match an exact schema?

0 flags → cheap · 1–2 → standard · 3+ or any ownership/judgment call → frontier. Apex only when you can write one sentence stating why the marginal intelligence pays for the cost.

The override — single biggest lever

Cheap-to-verify ⇒ cheap-to-generate. If output can be checked mechanically, it starts at the lowest tier regardless of how hard it looks — verification catches failure. Only unverifiable work needs to start high.

Step 2 — Escalate exactly one tier, on evidence only

  • Verification fails twice at the current tier
  • Two cheap-tier runs disagree on ambiguous-flagged work
  • The worker tags an item "uncertain"

Residue-only handoff

The next tier up gets only the failed or uncertain items, plus verification notes. It resolves the residue — it never redoes the batch.

Hysteresis — guardrails

Never de-escalate mid-task. Max one retry per tier. Anything still unresolved goes to a single batched apex tie-break call. One hard file in a 700-file job doesn't drag the other 699 up a tier.

 unit of work
      |
  6-flag rubric
      |
  +---+----+
  | 0 flags|--> cheap
  | 1-2    |--> standard
  | 3+/own |--> frontier
  +---+----+
      | fail x2 / disagree / uncertain
      v
  escalate +1 tier
  (residue only)
      |
  still unresolved?
      v
  single batched
  apex tie-break

Why it holds up

Flags steer. Verification and escalation decide.

Even when the rubric flags are scored imperfectly, the escalator still routes work to the right tier almost every time — because a wrong flag only ever costs one extra cheap attempt, never a wrong answer or a big bill.

See the data

A stock dispatcher model reproduces the rubric flags imperfectly — Haiku hits 90% agreement, Sonnet 93%. The weakest flag (format-strict) is only 60%. None of that matters: under the shipped policy, both dispatchers still route 100% of units to the correct tier. A wrong flag changes the ladder cap, never the base tier — worst case, one extra cheap attempt.

Haiku dispatcher
90% flag agreement
100% tier-match
Sonnet dispatcher
93% flag agreement
100% tier-match

The rules are about the work, not the model.

Every rule is a property of the unit of work — verifiable, ambiguous, blast-radius — never a specific model's known weakness. Vendor cards go stale as models change; work properties don't. It's also hard-won — a format-strict rule that worked on Anthropic backfired on Gemini, which is exactly why the rubric no longer encodes per-vendor behavior.

Honest limits

What this doesn't do.

Not a proxy, not a gateway, doesn't auto-flag in production (Warp scores the flags itself — measured robust to getting them wrong, see above), and doesn't promise a dollar figure for your workload. It also doesn't prove your number until you run it — every figure here is an observation from our tasks and our graders, not a guarantee about yours. We haven't independently verified a native SKILL.md discovery path for Warp the way Gemini CLI or OpenCode document one; treat that specific claim as unconfirmed until Warp's own docs say otherwise. Full list, with the finance/procurement note and the paid-tier disclosure, is on the main page.

Undercut the top tier. Not the quality bar.

Nothing about this page expires. What does keep happening is the token bill, one session at a time, on whatever Warp is currently doing with mechanical work.

View on GitHub