Blink: What should an agent do while you are not looking?
The All Things Agentic hackathon asked for agents. That word is doing a lot of work right now. Most of what gets called an agent is a chatbot with tools bolted on: you ask, it answers, and the moment you close the tab, it stops existing.
So I chose a problem that would force the question. Everyone has a plan. Almost nobody has the hour.
The gap between deciding something matters and actually doing it is never a gap in intention. It’s a gap in time. Task managers hold your list, calendars hold your appointments, and nothing owns the space between them—where every plan quietly dies. That problem is a good test of what an agent is, because the important work happens when you’re not in the conversation. A plan decays on its own. Tuesday happens whether or not you open the app.
So Blink turns a goal into real sessions on your real Google Calendar, then keeps working after the conversation ends. It reminds you with the reason you gave it, measures what you actually did, and rebuilds the week when life breaks it.
Then it told me it had cleared my calendar. It had not.
The chat path had no tools attached, so when I asked it to do something, the model did the only thing available: it produced the sentence a helpful assistant would say. It narrated a plausible action instead of taking one. Every word fluent, every word false. A broken agent that throws an error is annoying. An agent that tells you it did something is a different category of problem, because you stop checking.
After that, the project got one rule: never claim an action you did not take. That can’t be a prompt instruction. Politeness in a system prompt is a request, not a guarantee, so it became architecture. Replies are built from what tools actually returned. The tools that write to your calendar are not in the model’s toolset at all, so the agent can propose a change, and only your confirmation can execute it. Not “the model is told not to,” but “the model cannot reach it.”
Near the end, I wrote down a hundred things a real person might say to it, including the lazy phrasings, and scored honestly whether each would work. Forty-two out of a hundred.
The pattern mattered more than the number. The tools that did things were fine. The tools that found things to do them to were not. I had a perfectly good “cancel these sessions” tool that took a list of session IDs, and nothing that could produce that list for a whole day. So “clear my afternoon” was never going to work, no matter how good the delete was. Agent capability is not a list of verbs. It’s whether the model can get from a vague human sentence to the arguments a verb needs. Selection is the hard half, and it stays invisible until you go looking.
I fixed it, re-scored, and published both numbers in the repo. The before is the useful half.
If you’re building one of these: decide early what the model is allowed to be wrong about. In Blink, Gemini decides what to do and ordinary code decides what is true. The moment your numbers come from a language model, you’re one plausible hallucination away from telling someone they worked six hours when they worked two.