Judgment — anything the model can now decide better than your if-statements: which tool, what plan, how to split the work, what to summarize.
Invariants — anything the model can't see, can't undo, or can't be trusted to remember: the cache prefix, the clock, process lifetimes, state that must survive.
Connectors are third-party MCP servers in the cloud, signed in as the user: connect once, use from any device — so the set of connected apps can change at any time.
connector__<app>__<tool>, fetch the connected list before every turnMerge tools around user intent, make descriptions distinguishable, group by domain. Past 30–50 tool definitions, models get worse at picking the right one.
You can't delete the MCP servers users install themselves.
Core tools stay resident. Rare built-ins and large MCP sets move behind search automatically past a size threshold.
If it can't be found, it doesn't exist. Catalogs fetched over the network every turn slowed first token — we moved them back to resident.
A run_code tool: JavaScript calls tools.* through the same permissions and hooks. Failures return results, not exceptions.
run_code next to every native tool: barely used, and tokens went up 5%. It worked only once most tools became code-only.
Run a command in the foreground for 6 minutes and the tens of thousands of tokens before it are most likely no longer cached: slower first token, bigger bill. And the model guesses durations wrong.
Every command starts as a background task; the foreground just waits alongside it
Far below a 5-minute cache lifetime, with room for the model's own generation
No kill-and-rerun; the model is told not to start it again
Foreground time counts; backgrounding or reading output never extends the deadline
"You'll be notified — don't poll." Blocking waits capped at 30 s; a hint after two identical reads.
No task_output this turn → plain foreground mode; the background option isn't even in the schema.
Requests, tokens, cache behavior — PTC looked flat on score and was a clear win on requests
Change several at once and you can't tell which one did it
All tests pass? Check who changed the tests. Did it re-read files, repeat work, drop a constraint?
Run each task more than once; look at which tasks flipped, not only the average