An independent journal. Not a shop, and not affiliated with the tools it writes about. Disclaimer

Four cards labeled Error, File, Constraint, and Example. An arrow passes over a crossed-out pile of papers and lands on a terminal.
Four cards labeled Error, File, Constraint, and Example. An arrow passes over a crossed-out pile of papers and lands on a terminal.

AI

What belongs in the chat, and what stays out

25 September 2026 ยท 3 min read

A useful coding chat carries four things: the error, the file, the constraint, and one example. The rest of the repository can wait.

People paste too much because they are afraid of leaving out the one fact that would have made the answer right. The result is a chat that starts with a tour of the repository and ends with a confident patch against a file the model half-read. Context is not the same thing as bulk. The picture on this article is the distinction: four cards go to the terminal, and the pile of everything else is crossed out on purpose.

The four cards

Error: the exact message, the input that produced it, and what you expected instead. A paraphrase of the error is a different bug. File: the one file you believe is involved, or the diff you are about to accept, not the tree. Constraint: what must not change. “Do not add a dependency. Do not alter the public function’s arguments. Keep the empty input as a failure.” Example: one concrete case, in input and output, small enough to check by hand.

If you cannot fill a card, that is information. No error means you are designing, not debugging, and you should say so. No constraint means the model will choose the shape of the module. No example means you will not be able to tell a plausible answer from a correct one.

What to leave in the pile

Leave out the history of how you got here, unless one earlier decision changes the fix. Leave out unrelated files, lockfiles, and the README. Leave out a second problem you noticed while copying. A chat that is asked to fix the null and also rename the helpers will do both badly, and you will not know which half to trust.

Secrets do not belong in the packet either. Tokens, customer rows, private keys, and production URLs are not context. Replace them with the shape of the value, not the value. If the bug only reproduces with the real secret, the bug is not ready to paste into a chat.

Add a fifth card only after the first answer misses

When the answer is wrong, do not dump the repository as a correction. Name the miss in one sentence and add the single missing fact. “The function is called with an empty list, and an empty list must return an error, not an empty success.” That is a new card. It is smaller than the transcript, and it is the thing you will want in the next session.

Keep the packet next to the diff until you merge. If a hunk depends on a fact that was never on a card, either add the fact and re-check, or delete the hunk. The model did not see a file you forgot to open. It guessed. Guessed lines do not get a quieter review because the rest of the packet was careful.

CursorUltra Blogs is an independent journal. It is not affiliated with the tools mentioned in this piece, and nothing on this website is for sale. Read the disclaimer.