There is a middle ground between "run on every new message" and "run every time, forever". In Trigger mode your Agent still has a prompt, but a short script looks at each candidate thread first and decides whether that run happens at all.
This is for the arithmetic you would otherwise ask a model to redo on every tick — a threshold, a how-long-since check, how a thread compares to the rest of the workspace's recent activity. The script can see the thread and the workspace's recent history, and answering in code is both cheaper and steadier than inferring the same answer over and over.
It can also hand values forward. Return a set of named values alongside your yes, and the prompt can refer to them directly — so the instructions say "this thread is running hot at {{HEAT_Z}}" instead of explaining to the model how to work that number out. See Customizing the prompts behind every run for how tokens read inside a prompt.
Two limits are worth knowing, and both exist because a gate is paid for once per thread. There is a cap on a single evaluation and a second cap on all of them together in one tick; once the tick's budget is spent, the threads not yet looked at simply wait for the next one. And anything the gate does, it does per thread — asking a model inside a gate across twenty threads is twenty model calls every tick. Work that only needs doing once per tick belongs in a Script agent instead.
A gate that errors or runs long is treated as "don't fire" and logged, so a bad line can never stall the loop. An empty gate always fires, which means the mode behaves exactly like the plain keep-nudging one until you actually save a script — if a Trigger agent seems to run on everything, that is usually why.