How this helps you
Fewer wasted runs means your weekly usage lasts for real work, and the log tells you which routines are worth keeping.
After every run, append one line to routines/log/[name].csv: time,result,changed,minutes,needed_approval,note result is one of: ok, no_change, draft_left, failed note is under 12 words. Create the file with that header if missing.
What they did
@gippp69 wrote a long X article on running routines without wasting usage. His points: if the system can send an event (Slack, GitHub, a webhook, or an email to the Bot's own address), use a narrow trigger instead of a schedule. Otherwise pick the slowest schedule that still works; his examples are CI every 15 minutes, an inbox hourly and competitor pages daily. Anything faster than hourly should start with a cheap 'has anything changed?' check. Approvals from unattended runs expire after about 10 minutes, so a routine that runs while you sleep needs a Custom Rule that allows the action, or it should stop at a draft. The app keeps only the last 20 run records, so have each routine write its own log line, and delete routines that report no change almost every time.
Who it's for: Anyone with more than two or three routines, or whose usage runs out before the week ends.
Before you start
- At least one routine that already works.
How to try it
- List your routines and note how often each one runs.
- For any job a system can announce (a Slack message, a GitHub event, an email, a webhook), switch to an event trigger that matches one specific thing, not every new message.
- Slow every schedule down to the slowest one that still works.
- For anything faster than hourly, add a change check as the first step so most runs stop early.
- Add the log prompt below to each routine so you have more than the last 20 runs to look back on.
- After two weeks, delete or slow down any routine whose log is almost all no_change.
What to expect
A small CSV per routine. After a week or two you can see which routines mostly find nothing new and which ones leave drafts waiting for you.
Common mistakes
- Triggering on every new message in a busy channel. Match one phrase, reaction or mention instead.
- Expecting a 3am routine to wait for your approval. Unattended approvals expire after about 30 minutes (10 before the 0.77.0 update), so allow the action with a Custom Rule or stop at a draft.
- Relying on the app's run history. It keeps only the last 20 runs.
- Messaging the Bot while a routine is running. The changelog says the routine then runs again afterwards.
Related tips
- Keep routines one line long: The schedule says when. The skill says how.
- Put quiet hours inside the routine itself: Have the routine re-check the clock right before it acts, and skip itself if it's too late.
- Analyse your own usage CSV: Export usage from the Usage page and ask your Chief of Staff Bot how to cut it.
- Create a routine by asking, then ask what else to schedule: Describe a schedule in one sentence to make a routine, then ask the Bot which routines it thinks you need.
- A /clean-start skill for long chats: Save the goal, decisions, files and next action to a handoff file, then pick up in a fresh chat.
- Write the outcome, not the recipe: Describe what you want; pasted tool calls break by week two.
- Ask which of your past prompts should be routines: One prompt makes a Bot look back over what you keep asking and say what should be a routine, a trigger, or its own Bot.
- Keep an attention list instead of a priority list: An hourly routine reads your email, Slack, meetings and calendar and keeps a short list of what you are actually working on. Other Bots use it as a filter.
- Route Bird customer messages to a webhook routine: Bird's official plugin plus a Grok Bot webhook routine lets incoming Apple Messages or emails wake a Bot that drafts the reply for you to check.
- An event RSVP Bot that answers 'is X coming?' in Slack: A Bot reads your event registrations, posts who's attending by account each day, tags the owners, and answers questions in the channel for you.
- An incident routine that investigates before you wake up: A Sentry, PagerDuty or GitHub event triggers a Bot that builds the timeline and proposes a fix, but changes nothing in production without you.
- Make your Bots read websites with a script, not screenshots: One test: 213K tokens by clicking around, 51K with a browser script, almost none with a plain script. Give your Bots the rule.
- A content scout routine that files X news onto your idea board: Twice a day, a Bot reads public posts on X, picks three topics worth covering, and adds the useful links to matching cards on your Notion idea board.
- Have a Bot watch for cancellations at a fully booked spot: Ask a Bot to check a booking page every hour and ping you the moment a slot opens, so you can grab a cancellation before anyone else.
- Build a monthly usage audit page that labels every routine: Hand your Bot screenshots of your usage and billing pages, get a page that marks each routine Keep, Slow down, Change check or Retire.
- A read-only usage audit across your whole Bot team: One prompt has your chief of staff check every Bot's routines, schedules and triggers, then report what to pause, slow, narrow or merge, and change nothing until you approve.
Worth knowingThe article's dollar figures are the author's own API maths, so we left them out. The official help page backs up the main point: hourly schedules or busy Slack triggers can use a week of usage in a day. Routines can run at most 300 times an hour in total and 200 per routine, and they pause if you are away for a long time.Next in Routines →Write the outcome, not the recipe
Learn more: Grok Bot Routines Not Working? Do It by Hand, Save a Skill, Then Schedule · All Grok Bot routines tips