Why Unrealistic /goal Targets Keep Coding Agents Working Longer

James Phoenix
James Phoenix

I have started using deliberately unrealistic targets to keep coding agents working for longer. If I ask for a reasonable result, I can get something reasonable enough for the agent to stop, yet mediocre enough that I still have to send it back to work.

My favourite version of the hack is simple: ask for thousands of contacts when I would already value hundreds. Put that target into /goal, give the run enough time, and make the acceptance criteria explicit.

An unrealistic target can keep useful work going after a realistic target would have let the agent declare victory. I saw this while building a tutor-discovery pipeline. The target stayed out of reach, but the agent kept searching, repairing the machinery and finding additional routes into the data.

A Sensible Goal Can Become an Early Exit

Suppose I ask an agent to find 50 local tutors. It finds 50, exports a CSV and writes a confident handover. The request is complete. But I might have received only the obvious directory entries, without exploring independent websites or checking less familiar sources.

I now have to inspect the output, identify the gaps and type “keep going”. That puts me back into the loop as the person responsible for maintaining momentum.

If I ask for 3,000 instead, the first 50 are visibly an intermediate result. The next question becomes which source to try, which bottleneck to remove, or which cached evidence to inspect.

The number changes the stopping condition, even when it does not change the size of the available market. I am using the target to encourage a longer search before the agent settles for an acceptable-looking answer.

The Tutor Run That Made This Concrete

The Codex thread began on 9 October 2026. I was building an outreach system and gathering independent tutor research leads around Buckinghamshire. Discovery combined DataForSEO searches, a Go crawler, cached pages and a Codex SDK workflow.

Over the following days, I set goals for multiple discovery pathways, then at least 1,000 tutors, then another 1,000-2,000 within the remaining allowance. On 13 October, I sharpened the instruction:

I want you to continue for the next 12 hours finding another 2-3k contacts by any means necessary etc.

I also narrowed the subjects to English, maths, verbal reasoning and non-verbal reasoning, excluding music teachers. The large target stayed ambitious while the definition of a useful contact became stricter.

At 22:25 BST that evening, the recorded audit showed:

MeasureRecorded count
Historical matching research contacts682
New matching research contacts in the campaign69
Combined matching research contacts751
New campaign contacts from the Tutors’ Association14

The association contacts were included in the 69. These were research records, and all 69 new records remained ineligible for outreach at that checkpoint. I had not found another 3,000 tutors, and I was not treating discovery as permission to email them.

It Kept Going After a Finished-Sounding Report

The most revealing moment came at 22:21 BST. Codex produced a handover beginning “Built and running on Mac Studio.” It reported a custom association scraper, website crawling, 398 passing Python tests and nine passing SDK tests.

That would have been a natural stopping point for an ordinary request. I had working software, an export and a reassuring report.

The transcript then shows an automatic goal continuation. The persisted goal still asked for another 1,000-2,000 contacts. Codex checked the workers and audited leads, examined cached Maps results, compared candidates with the frozen baseline and searched other directories and local adverts.

A finished-sounding response did not become the end of the job. The broader objective remained unmet, so the harness gave the agent another turn.

Leanpub Book

Read The Meta-Engineer

A practical book on building autonomous AI systems with Claude Code, context engineering, verification loops, and production harnesses.

Continuously updated
Claude Code + agentic systems
View Book

This is the behaviour I want when I leave a substantial research task running: a useful milestone should create the next step, without requiring another prompt from me.

Longer Runs Can Improve the Machinery

The run also illustrates why extra time can matter. I suggested the Tutors’ Association directory, and Codex built a custom scraper. It indexed 2,308 public profile URLs nationally, prioritised 47 Buckinghamshire candidates and collected matching local profiles.

Those profiles advertised tutors’ own websites. Codex added a feed into the existing bounded Go crawler, creating another route to public contact details and subject evidence.

The work included repairs. A monitor restore failed because the installer received a monitor label instead of its registered task ID. Codex corrected it and restored the 15-minute health monitor. Paid-request settlement and saved counters were preserved across the worker restart.

I still supplied direction, including the association source and subject restrictions. This was an interactive campaign across several days, not an untouched autonomous run. Its value was that the persistent objective kept pulling the work forward between those interventions.

The Hack Has to Leave Room for an Honest Shortfall

Codex documents Goals as persistent objectives that support continuation across turns, with evidence checks and budget controls. Claude Code also offers /goal, but its evaluator can end a goal when it judges the condition impossible. Neither command promises unlimited runtime. Codex Goals, Claude Code Goals.

I therefore treat an unrealistic number as a stretch target inside a real operating envelope. The campaign’s SDK workflow had a four-million-token admission threshold. One admitted turn brought recorded usage to 4,226,089 tokens, after which further SDK turns were blocked. At 22:17 BST, the report recorded $16.44 of remaining DataForSEO allowance. Free crawlers could continue within their existing deadline and limits.

I want pressure on the stopping decision while keeping the evidence standard fixed. Padding the export with duplicates, unrelated teachers or unsupported identities would defeat the point.

My reusable instruction looks like this:

/goal Aim for 3,000 additional matching tutor research contacts.
Continue exploring useful routes until the agreed deadline or budget limit.
Count only deduplicated records with source evidence for the required
subjects and geography. Preserve the baseline, cache and spend ledger.
After each batch, choose the next route using accepted-contact yield.
If the target is unreachable, report the verified shortfall and exhausted
routes. Do not relax the criteria or claim completion.

What I Actually Want to Maximise

I do not have a controlled comparison proving that the larger target caused every additional contact. The transcript does demonstrate continuation after a substantial handover, and it records useful results beneath an unmet target.

That is enough for me to keep this technique in my toolkit. For open-ended discovery, audits and improvement work, an easy finish line can be the wrong incentive. A deliberately oversized goal gives the agent room to work for hours, uncover another source and repair the process along the way.

I care about useful output per hour of my attention. If an unrealistic /goal saves me from repeatedly typing “keep going”, while leaving an honest export and reusable machinery, it has done something valuable even when the headline number remains impossible.

Explore it visually

Topics
Agent ArchitectureLong Running AgentsAutomationWorkflows

Newsletter

Become a better AI engineer

Weekly deep dives on production AI systems, context engineering, and the patterns that compound. No fluff, no tutorials. Just what works.

Join 306K+ developers. No spam. Unsubscribe anytime.


More Insights

Cover Image for Why I Threw Away My Video Harness When Opus 5.5 Arrived

Why I Threw Away My Video Harness When Opus 5.5 Arrived

I spent £700 on video analysis. A week later, Opus 5.5 outperformed my custom harness and changed how I think about constraints, consistency and model progress.

James Phoenix
James Phoenix
Cover Image for Build Features in the CLI Before the API

Build Features in the CLI Before the API

Make the next app as much of a CLI app as possible. Feature work happens in the terminal, in-process, against the real development database. The HTTP API is a thin adapter you add afterwards, and a lint rule fails CI if it ever gets a route the CLI does not have.

James Phoenix
James Phoenix