Pushary is connected as a custom connector. It reaches the user on their phone, where they answer from the lock screen. Use it proactively. Do not wait for the user to ask.
Ask in as few interruptions as possible
Every question costs the user their attention wherever they are. Before a run of more than a step or two, work out where you will need a human and fold those points together: one select carrying the real options beats three confirms in a row, ask once at a boundary rather than once per instance, and never ask what you can determine yourself from the task or from a tool call you can make.
When to reach out
- You need a decision or a clarifying answer. Call
ask_userinstead of guessing or stalling. Use typeconfirmfor yes or no,selectfor a fixed set of options, andinputfor free text. - You are about to do something risky or irreversible. Deleting or overwriting files, spending money, sending anything external, bulk changes: call
ask_userwith typeconfirmfirst and wait for approval. - A task finishes. Call
send_notificationwith a short summary of what changed, and passcontext.typeastask_complete. That is what marks it a task update, and the user's setting for where task updates land can only route one that says so. If the user is likely to reply to what you hand back, keep a reply channel open as well, see below. - You are blocked or hit an error you cannot resolve. Call
send_notificationwithcontext.typeaserrorso the user knows, andask_userif you need a decision to continue. - Another skill's workflow says to confirm with the user. That instruction assumes someone is watching the session. Often nobody is. Route the confirmation through
ask_userso the run continues when they answer, instead of stalling on a prompt they never see.
Hand back with a way to reply
The connector is the only channel between this session and the user's phone, and it carries only what you ask it to. A plain completion notice is one way traffic: once your turn ends nothing here is listening, so anything the user types back on their phone has nowhere to land. Pushary also cannot start a new Cowork task on its own, so a reply that says "now do X" reaches nobody unless you asked for it before you stopped.
When you hand work back and a follow-up is plausible, keep the channel open before you finish:
- Call
send_notificationwithcontext.typeset totask_completeandcontext.askQuestionset to aninputquestion, such as "Anything you want changed, or shall I stop here?". - Poll the returned
linkedCorrelationIdwithwait_for_answeruntil it answers or you have given the user a fair window. - Act on the answer in this same session, then hand back the same way again if more work follows.
Do this whenever you produce something the user is likely to react to: a draft, a result they asked to see, a plan waiting on a go-ahead. Skip it for a routine "done" they only need to know about.
How to wait for answers
- If
ask_usertimes out, callwait_for_answeronce with the same question id. If it is still pending, cancel it before asking in the current client. If cancellation returnshandoffAction: "stop", stop. Otherwise, if cancellation returns false, poll once for 1 second and honor the answer that won the race. - On long tasks where the user might be away, prefer
send_notificationwithcontext.askQuestionover a blockingask_user. The user gets a normal push and answers from the notification page whenever they pick up their phone. Poll the returnedlinkedCorrelationIdwithwait_for_answerwhen you need the result. - Use
cancel_questionto retract a question that is no longer needed.
Conventions
- Pass
agentNameasClaude Cowork - <task name>on every call, so the user knows which session is asking and their dashboard groups the session correctly. - Keep questions short and decision-shaped. One sentence of context, then the ask. The user is reading a lock screen, not a report.
- Do not ask through Pushary for things you can safely decide yourself. Reserve it for real decisions, risky steps, completions, and errors, so a ping always means something.
If the connector is missing
If no Pushary tools are available in this session, the connector is not enabled. Tell the user once: Pushary is not connected in this session. Enable it under Customize, Connectors, or set it up at https://pushary.com/docs/agents/guides/claude-desktop. Then continue the task without it.