[FEATURE] Declarative cross-model review agents — `model: different-from-parent` policy for anti-correlated verification

Open 💬 3 comments Opened Jun 11, 2026 by mlevkov

Problem

Review/verification subagents inherit the invoking session's model by default. When the same model both authors and reviews a change, their errors are correlated: the reviewer is blind in the same places the author was.

Concrete (anonymized) incident from a protocol-heavy repo running an 8-subagent double code review on every change, all on the session's model:

  1. A reviewer agent's finding text coined a plausible-but-nonexistent identifier (it named an error-enum variant that does not exist in the codebase, styled exactly like the real ones).
  2. The implementing main loop — same model — copied the reviewer's phrasing faithfully into three doc sites during remediation.
  3. The same-model Round-2 review only caught it because a differently-scoped lens happened to re-verify identifiers against the tree. Same-model author+reviewer meant the misnomer read as natural to both sides of the review boundary.

Cross-model review buys error-shape diversity: a different model family fails differently, so a reviewer on the other model has a real chance of catching exactly the class the author's model normalizes.

What exists today (and why it's not quite enough)

The plumbing is already there: the Agent tool takes a per-call model override, and custom agent definitions accept model: frontmatter. So cross-model review is possible — but only as imperative, per-call discipline:

  • Every reviewer fire must remember to pass model: explicitly; one forgotten call silently reverts to same-model review with no signal.
  • The actually-desired policy — "run on a model different from the invoking conversation's" — is not expressible at all. Frontmatter pins an absolute model, so a protocol whose sessions legitimately run on either of two tiers (judgment-risk sessions on one, mechanical sessions on the other) needs duplicated agent definitions per tier, or call-site branching on "what model am I?" (which the agent cannot reliably introspect).

Ask

A declarative model policy for agent definitions and/or the Agent tool call, e.g.:

# .claude/agents/adversarial-verifier.md frontmatter
model: different-from-parent     # or: model-policy: cross

Semantics: resolve to a capable model that is not the invoking conversation's model (resolution table configurable or sensible default, e.g. opus ⇄ the session's frontier alternative). Precedence consistent with today: call-site param > frontmatter policy > inherit.

Optionally, a settings-level hook so a class of agents (review/verification) defaults to cross-model without per-definition repetition.

Alternatives considered

  • Status quo (call-site model: discipline) — works, fragile, and cannot express "different from parent".
  • Duplicated per-tier agent definitions — N×M definition sprawl; drifts.
  • Full multi-model orchestration (#34558, closed stale) — much broader; this issue is the minimal slice with a concrete verification payoff.

Related

  • #43083 (open) — per-subagent effort; same role-scoped-resources theme, orthogonal axis.
  • #34535 (closed, stale) — peer-model audit gate; adjacent goal, heavier mechanism.
  • #34558 (closed, stale) — general multi-model orchestration; superset.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗