Skip to content
Period 7 / 11

Failure 04: The Agent Says Goodbye Too Soon

Before you start

Prerequisite: Lesson 05 ("Failure 03: The System Disagrees With Itself") and cooperative cancellation — the shared-token pattern that stops every in-flight operation the instant an interrupt is confirmed. After this lesson, you can: name and apply progressive control — agentic behavior by default, with a deterministic hard gate at the one seam where a soft instruction isn't enough — so a required step can no longer be talked past by the model, not even by accident.

Lesson 05 was about a race the user triggers: they say "stop," and two parts of the system disagree about whether the call is still live. This failure is different. Nobody interrupts anything. The agent just decides, on its own, that the conversation is over, and it's wrong.

A polite sentence and a bad ending

Picture a long call, going well.

The customer says something polite

"Alright, that makes sense." It's conversational filler — the kind of thing people say to keep a conversation moving, not to end it.

The agent misreads it as a closing cue

A purely agentic agent working only from a system-prompt instruction reads that phrase as permission to wrap up.

It says goodbye and hangs up

Sometimes before a required disclosure has been read, mid-thought, with the actual matter unresolved.

The instinctive fix is to write a better instruction: "don't end the call until the required disclosure is read." It sounds sufficient. It measurably isn't.

The number: a soft instruction fails about one in five times

A system-prompt instruction against premature call-ending, with no other enforcement behind it, fails roughly 20% of the time in this course's own reference tests — not a published study, a first-party count against the same agent and stack used throughout this course, reproducible with the demo below. It doesn't fail randomly. It concentrates in exactly the calls where failure is most expensive:

Where it concentratesWhy
Long callsThe model's attention has drifted from what was said early in the prompt
Ambiguous conversational momentsOrdinary filler gets misread as a goodbye cue
Regulated flowsThe thing the agent skipped was a disclosure it was legally required to make
Why a well-worded prompt isn't the fix

The failure isn't that the instruction was worded badly. It's that a soft instruction is a request, and requests compete with everything else in context for the model's attention. Over a long call, early-prompt content is exactly what drifts. A clearer sentence doesn't change that. It's still a request, still competing, still optional from the model's point of view.

Progressive control: the pattern this course names here

Call this pattern by name, because it recurs: progressive control. The agent stays agentic by default, free to converse naturally, handle tangents, respond to whatever the customer actually says, everywhere except the seams where the cost of a miss is unacceptable. At those seams, a deterministic hard gate takes over: not a prompt asking the model to behave a certain way, but a rule in the harness itself that the model cannot talk its way past. Here, the gate is a mandatory wrap-up flow. The agent is not permitted to end the call until that flow has run — full stop, enforced outside the model's own judgment.

Progressive control: agentic by default, deterministic at the seam

That's the whole shape: agentic by default, deterministic where it counts. You are not locking the agent down everywhere. You're deciding, deliberately, which handful of moments don't get a vote.

Quick check — Why doesn't a clearer system-prompt instruction fix the premature-goodbye failure?

A reference demo built for this course runs the same model and the same prompt eight times with only the soft instruction in place, and counts the premature goodbyes. Then it adds the deterministic wrap-up gate and runs it again: the failure mode isn't reduced, it's ruled out. That's the difference between a control that competes for the model's attention and a control the model never gets asked about.

What to build

Gate the seams, not the whole call

Don't gate everything — that defeats the reason to use an agentic model at all. Identify the seams where a miss is unacceptable (a required disclosure, an authentication step, a compliance confirmation) and enforce those in the harness, deterministically, outside the model's discretion. Everywhere else, let the agent be an agent.

This lesson names the shape once. Later lessons return to it as "the same progressive-control shape as lesson 06" rather than re-deriving it, so it's worth fixing the name now: agentic by default, deterministic at the seams.

Next: Failure 05 — Tool Calls the Agent Has Already Spoken

Progressive control keeps the agent from ending a call early. The next failure is about a gate that runs too late to matter — because in voice, the agent has already said the number before anyone could check it.

Have a question about this lesson?

Reply here and it goes straight to Rod. Same as replying to one of his emails.