{"id":7,"date":"2026-09-17T20:52:44","date_gmt":"2026-09-17T20:52:44","guid":{"rendered":"https:\/\/wpcontentwriter.com\/kb\/cost-and-run-ceilings\/"},"modified":"2026-09-17T20:52:44","modified_gmt":"2026-09-17T20:52:44","slug":"cost-and-run-ceilings","status":"publish","type":"page","link":"https:\/\/wpcontentwriter.com\/kb\/cost-and-run-ceilings\/","title":{"rendered":"Understanding cost and run ceilings"},"content":{"rendered":"<p>An agent that decides its own next step needs a limit that is not its own judgement. There are four, and a run stops on the first one it reaches.<\/p>\n<h2>The four ceilings<\/h2>\n<h3>Steps<\/h3>\n<p>How many actions a run may take. The bluntest limit and usually the most useful.<\/p>\n<h3>Spend<\/h3>\n<p>Measured from the usage log rather than estimated, so it reflects what was actually billed.<\/p>\n<h3>Tokens<\/h3>\n<p>Total tokens across the run.<\/p>\n<h3>Deadline<\/h3>\n<p>Wall-clock. A run that is still going when it passes stops there.<\/p>\n<h2>Zero means no limit<\/h2>\n<p>A ceiling of zero means no limit of that kind. For an agent that decides its own next step, that is rarely what anyone wants \u2014 set at least a step count and a spend limit before running anything unattended.<\/p>\n<h2>Frozen when the run starts<\/h2>\n<p>The ceilings are written onto the run at the moment it begins. Editing a playbook or a global setting between clicking and the queue picking the job up cannot change a run already authorised \u2014 what you approved is what runs.<\/p>\n<h2>Reading what stopped a run<\/h2>\n<p>Agent Runs shows the reason: the step count, spend, tokens or the deadline. A run that stopped on a ceiling is not a failure \u2014 it did what it was allowed to do and then stopped, which is the point.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>An agent that decides its own next step needs a limit that is not its own judgement. There are four, and a run stops on the first one it reaches. The four&hellip;<\/p>\n","protected":false},"author":0,"featured_media":0,"parent":0,"menu_order":30,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/wpcontentwriter.com\/kb\/wp-json\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpcontentwriter.com\/kb\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wpcontentwriter.com\/kb\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/wpcontentwriter.com\/kb\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":0,"href":"https:\/\/wpcontentwriter.com\/kb\/wp-json\/wp\/v2\/pages\/7\/revisions"}],"wp:attachment":[{"href":"https:\/\/wpcontentwriter.com\/kb\/wp-json\/wp\/v2\/media?parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}