# CCPP Limits

> No tool result reaches the agent whole, and every token a session spends is measured.

Published 2026-09-23, updated 2026-09-23.

Usage limits for coding agents: results cut into blocks and ranked by a local embedding model, the whole output kept on disk, and the bill of every session measured as it grows.

Install:

```
ccpp sync
```

A test run prints four thousand lines. The agent needed six. Without limits, all four thousand go into the context and are paid for on every turn that follows. CCPP Limits keeps the six, and tells the agent exactly where the rest is.

## Why it matters

- **Pay for what is read**: Each result is cut into blocks, embedded on your machine, and ranked against what the call said it expects. Only the closest come back.
- **Nothing is rewritten**: No model summarizes your output. Every line shown is the line the tool printed, with its line numbers.
- **Nothing is lost**: The whole result is saved to a file named in every response. The agent reads the rest by line numbers when it needs to.

## How it works

Calls say what they expect in a few words. Those words and every block of the result become vectors; cosine similarity picks the blocks.

```
h.read_file("server.go", {prompt = "func routes GET POST handlers"})
```

## Specifications

| | |
|---|---|
| Result size | 8 blocks of 80 lines, 12,288 characters, a 50 character summary |
| Whole payloads | Diffs and instructions up to 40,960 characters |
| Embedding | A small model on the CPU, no network call |
| Measurement | Tokens of every session, in the TUI and the CLI |

**Stop paying for dumps**

CCPP Limits is included in the Builder plan.

[Create an account](/signup)
