All posts

Tasks and reminders that tell you when they fail

Minion now has a shared task list your team and every connected agent can update, plus one-shot reminders. The part I cared most about: when a reminder can't reach you, it stops retrying and says so.

5 min read
A checklist with two ticked boxes and one empty box, joined by a dotted line to a ringing alarm clock with an envelope and a bell beside it.

You end a good session with your agent and there's always a tail. Check the launch copy on Thursday. Ask Sam about the Stripe webhook. Rotate that key before it expires on the 14th.

Then the chat closes, and the tail goes with it.

I kept losing those. Some went into a notes app, some into a todo app my agent couldn't see, and most stayed in a conversation I'd never scroll back to. So Minion has tasks now, and reminders that go with them.

One list, shared by your team and your agents

Tasks in Minion are a plain shared todo list. Each task has a name, notes, tags, a priority (high, normal or low), and optional start and due dates. Everyone on your team sees the same list, and so does every agent you connect.

That second part is what I actually wanted. At the end of a session I can say "add a task to review the launch, high priority, due Friday, tag it launch" and the agent calls this:

await minion.tasks.create({
  name: 'Review the launch',
  priority: 'high',
  dueDate: '2026-10-10',
  tags: ['launch'],
})

On Monday, in a different agent, I ask what's overdue. That's one call too:

const { tasks } = await minion.tasks.list({ done: false, dueBefore: '2026-10-12' })

Lists come back sorted the way you'd sort them by hand: high priority first, then the earliest due date, with undated tasks last. And if you'd rather click, the same list lives in the dashboard at /app/tasks , with Open, Done, Overdue and All views, search, and tag filters.

A few deliberate choices:

  • Completing a task doesn't delete it. Done tasks stay in the Done view, because "did we ever do that?" is a question you'll ask. Delete exists, but it's permanent, and the docs nudge you to complete instead.
  • Dates are calendar dates. A due date is 2026-10-10, with no time and no time zone. "Overdue" means due before your local today; a task due today isn't overdue yet.
  • Dates don't fire reminders. A due date says when something should be done. A reminder says when you want to be poked about it. Those are often different days, so they're separate fields.

Reminders that admit when they fail

A reminder is a single timestamp on a task. Set it in the dashboard, or have your agent pass remindAt with an explicit time zone offset:

await minion.tasks.update({
  id: task.id,
  remindAt: '2026-10-09T09:00:00-07:00',
})

When it comes due, Minion sends it to you by email, browser notification, or both, depending on what you've turned on in Settings. It goes to the person who set it, not the whole team. If a teammate moves it to a different time, they become the recipient. Complete the task and the reminder is cancelled.

None of that is unusual. What I spent most of the time on is the failure case, because I think it's where most reminder systems quietly lose your trust.

Think about how a reminder usually fails. Your email bounces, or you turned notifications off three weeks ago and forgot. The reminder system tries, fails, and says nothing. You don't find out until the thing you wanted to remember has already happened. A reminder that might silently not arrive is worse than no reminder, because you stopped keeping it in your head.

So here's what Minion does when delivery fails:

  1. It retries with backoff. 5 minutes, then 10, 20, 40 and 60. That's six attempts over a little more than two hours.
  2. Then it stops and tells you. The task records why it failed: either nothing reached you, or your email and browser notifications are both off. In the second case there's nothing to retry, so it says so straight away.
  3. It shows up in Needs attention. The failed reminder lands in your Needs attention list with a plain explanation ("Email and browser notifications are both turned off in your Settings...") and a link to the task. Fix the cause, save the reminder again, and it's armed again.

There's also the case where your settings are fine and Minion itself is the problem. Reminders go out from a scheduler that runs every minute. If that scheduler stalls, any reminder more than 5 minutes late shows up in your Needs attention list, so you can check the task yourself. Minion's own health check flags it too, so I hear about it as well. When the scheduler recovers, the reminder still goes out.

One small privacy detail I like: the browser notification just says "A task reminder is due." The task name stays out of your lock screen. The email has the name and a link straight to the task.

Why tasks live next to everything else

You could do all of this with a todo app and a calendar. But Minion already holds your agents' memory , their notes and handoffs , your team's packages and jobs . Tasks fit the same idea. The next step from a conversation belongs somewhere every agent can reach, and that place shouldn't disappear when you switch from Claude to Codex.

A package can create tasks too. A nightly job that finds a failing check can file "Look at the flaky deploy test" with today's date, and it'll be waiting for whoever picks it up in the morning.

Try it

Connect your agent, then ask it to add a task with a reminder five minutes from now. Turn on email or browser notifications in Settings first, and if you forget, Minion will tell you that too.

The full reference is in the Tasks docs .