Skip to specification

Context Delivery

Giving the model the material it needs: the relevant file, the failing test, the stack trace. The difference between a bare model and an agent starts here.

Ask a bare model to fix a bug with no files attached and you get a generic fix — plausible-looking code for a codebase it has never seen. Give it the actual source file, the failing test, the stack trace, and you have a very different animal. That difference is context delivery.

This is the mechanism that hands the model its material. When you type @src/auth/session.ts and the file's contents appear in the prompt, when the harness pipes in the failing test output, when a stack trace lands next to your question — that's this primitive at work.

The moment an agent stops guessing

The instructions layer told the model how to behave. Context delivery decides what it sees. And what it sees is everything: the model has no eyes beyond the prompt.

Without delivery                 With delivery
─────────────────────            ─────────────────────────────
"fix the login bug"              "fix the login bug"
                                 + @src/auth/session.ts
                                 + failing test output (23 lines)
                                 + stack trace pointing to line 47
─────────────────────            ─────────────────────────────
→ generic, invented fix          → targeted change to line 47
In the wild

Context delivery shows up as:

  • @-file references — you point, the harness inlines the content
  • Attached failing tests and stack traces — the evidence rides along with the question
  • Piped tool output — a grep result or build log delivered straight into the conversation
  • Automatic inclusion — some harnesses pull in open files, recent diffs, or the active selection without being asked

More is not better

Here's where this layer hits its own wall. Having a delivery mechanism tempts you to deliver everything — the whole repository, the full incident log, six API manuals. Technically it might even fit in a large context window.

So the question changes shape. It's no longer "can we provide context?" It becomes "who decides which context matters right now?" That's a genuinely different job — and it gets its own primitive.