# Claude.ai, Claude Desktop, and Cowork

Source: https://pushary.com/docs/agents/guides/claude-desktop
Last updated: 2026-10-24

> Connect Pushary from the Claude directory to get task updates and answer questions on your phone or Mac. Works with Claude web, Desktop, mobile and Cowork.

Connect [Pushary in the Claude directory](https://claude.ai/directory/pushary) to get task updates and answer Claude’s questions from your phone or Mac. The same connector works in Claude on the web, Desktop, mobile and Cowork. You need a Pushary account with an active plan or trial, and the Pushary app signed in on your phone or Mac.

Claude can ask through Pushary and wait for your answer, but it chooses when to do so. The connector does not intercept Claude's native permission prompts. For enforced approval before risky commands run, use an agent with hooks, such as [Claude Code](/docs/agents/guides/claude-code). [Supported agents](/docs/agents/supported-agents) shows which agents Pushary can enforce.

## Connect Pushary to Claude [#connect-pushary-to-claude]

A connector is how Claude plugs in an outside service over MCP (Model Context Protocol, the standard way AI apps call outside tools). The same connector works in Chat on the web, desktop and mobile, and in Cowork.

<Steps>
  <Step>
    ### Connect from the directory [#connect-from-the-directory]

    Open [Pushary in Claude](https://claude.ai/directory/pushary) and choose **Connect**. If Claude shows **Connect for your team**, use its arrow menu and choose **Connect just for me** for personal setup. On a managed workspace, an owner or admin may need to enable it first. You do not need an API key, MCP URL or OAuth client credentials for the directory flow.
  </Step>

  <Step>
    ### Sign in to Pushary [#sign-in-to-pushary]

    Sign in with the Pushary account that owns your workspace. Claude often asks you to sign in the first time it calls a Pushary tool, not the moment you add the connector.
  </Step>

  <Step>
    ### Send a test question [#send-a-test-question]

    Turn on Pushary in a conversation and paste this prompt:

    ```text
    Use Pushary ask_user to ask “Did this setup question reach you?” with type “confirm”. Use agentName “Claude Cowork - Setup check” in Cowork or “Claude Chat - Setup check” in Chat. Wait for my answer and tell me which answer you received. Do not run a command or change any files.
    ```

    The question shows on your phone, or in the Mac notch if Pushary Isle is running. Answer it. Claude tells you which answer it received.
  </Step>
</Steps>

<Callout type="warn">
  **Sign in with the Pushary account that owns your workspace.** The URL carries no credential, so the account you pick at the sign-in screen is the one the connector speaks for. If your browser is signed in to more than one Pushary account, the screen accepts the wrong one too. Every tool call then fails with a generic authorization error. The **Claude and ChatGPT** card in Settings > Connections names the account to use.
</Callout>

Until Claude makes its first call, the card says **Not used yet** or **Waiting for the first handshake**. That is expected. After the test, it shows **Connected by sign-in as** and your email.

## Add the connector manually [#add-the-connector-manually]

If the directory listing is unavailable, open **Customize > Connectors**, choose **Add custom connector** (or **Add > Custom > Web**), and name it **Pushary**. Paste this public server URL:

```text
https://pushary.com/api/mcp/mcp
```

Use OAuth and automatic client registration. Leave OAuth Client ID and Secret empty, then sign in with the same Pushary account as your phone or Mac. The URL contains no key or password. Enable Pushary in a conversation and send the test question above.

## Use it in Cowork [#use-it-in-cowork]

Connectors belong to your Claude account. The connector you added above is also available to Cowork tasks in the desktop app.

<Steps>
  <Step>
    ### Open a Cowork session [#open-a-cowork-session]

    Start or open a Cowork session in the Claude desktop app.
  </Step>

  <Step>
    ### Open Connectors [#open-connectors]

    Open **Customize*&#x2A; (or the &#x2A;*+** icon in the chat bar), then **Connectors**.
  </Step>

  <Step>
    ### Turn on Pushary [#turn-on-pushary]

    Turn on **Pushary** for the session.
  </Step>
</Steps>

### Give Cowork standing instructions [#give-cowork-standing-instructions]

Cowork runs long tasks, often while you are away. The connector helps most when Claude uses it without being asked. In the Claude app, open **Settings**, then **Cowork**, and paste this block into your standing instructions.

<Callout type="warn">
  Put this guidance in Cowork's standing instructions or in a Pushary plugin. Do not rely on memory files in a repository for it.
</Callout>

```text
Pushary is connected as a connector. Use it proactively to reach me on my phone or Mac notch.

- When you need a decision or clarifying answer, call ask_user. Use type "confirm", "select", or "input" as appropriate. Ask once on one channel.
- Before a risky or irreversible action outside my existing authorization, call ask_user with type "confirm" and wait for approval. Silence is never consent.
- When a task finishes, call send_notification with context.type "task_complete" and a short summary. For an error you cannot resolve, use context.type "error"; use "info" for other updates.
- When a specific unresolved decision blocks finishing, ask it with ask_user before you stop and wait for the answer. Do not ask for optional feedback just to keep a finished turn alive.
- Follow handoffAction when present, otherwise nextAction. While pending, keep waiting with the same correlationId. Only for an explicit handoff, cancel_question before asking in the current chat. If cancellation returns handoffAction "stop", stop. If cancellation returns false, poll once for 1 second and honor the answer that won the race. Expired, cancelled, missing, and unavailable questions are not new timeouts.
- Pass agentName as "Claude Cowork - <task name>" on every call, and reuse one opaque sessionId per task so parallel tasks stay separate. Never include credentials in these identifiers.
- Cancel a question when it is no longer needed. Once this turn ends, reopen Cowork for follow-up work; this connector cannot restart it.
- If Pushary tools are missing or disabled, report that once and continue within my authorization. Do not claim a notification or approval was delivered.
```

The same block has a copy button in Settings > Connections, under **Cowork instructions and setup test** on the **Claude and ChatGPT** card. With the agentName in place, Cowork sessions show up in your Activity feed and Fleet view as **Claude Cowork**, grouped by task.

<Callout type="warn">
  Cowork may ask you to approve connector tool calls inside the session. Depending on your version, it may not offer "Allow always" for custom connectors. If Pushary calls keep prompting you, keep the standing instructions to the moments that matter: risky steps and finished tasks.
</Callout>

### Long, unattended sessions [#long-unattended-sessions]

One `wait_for_answer` call waits about 55 seconds. A question from Cowork stays answerable for 10 minutes; most answers arrive within a minute. Cowork sessions can run much longer than that while you are away:

* **A decision Claude needs:** call `ask_user`, then keep calling `wait_for_answer` with the same correlation ID while pending. Only move it to the current chat for an explicit handoff, cancelling the live question first. If the question closes unanswered, that is not approval: Claude asks you in the chat instead.
* **A choice Claude would make anyway:** Claude does not ask. It makes the choice and lists it in its final update, so you can change it. For updates that need no answer, call `send_notification`.

### What your phone can do with a Cowork session [#what-your-phone-can-do-with-a-cowork-session]

The connector is an outbound channel. Cowork reaches your phone when it decides to, and you answer from the lock screen. Nothing flows back into a Cowork session on its own, because the connector has no command consumer or task-launch API.

You can:

* Answer any question Cowork asked: confirm, select or free text.
* Answer within 10 minutes of the question arriving. After that it closes, and Claude asks in the chat instead.

You cannot:

* **Reply to a finished task.** Once Cowork's turn ends, nothing in that session is listening. To leave room for a reply, Cowork has to ask before it stops: `ask_user` with the decision, then `wait_for_answer` while it is pending. Do this only for a specific unresolved decision, not for optional feedback.
* **Start a new Cowork task from your phone.** Messaging an agent and starting one are features of the Pushary CLI, which picks them up on your own computer. The connector has nothing that picks up queued commands, whether the Cowork task runs locally or in the cloud. The Pushary phone app hides both controls on a Cowork session, so nothing gets queued that would never arrive.

To message or start an agent from your phone, use an agent the CLI sets up on your computer with `npx pushary@latest setup`. Starting a new task from the phone works with Claude Code, Codex and Gemini CLI.

## Tools Claude gets [#tools-claude-gets]

The connector gives Claude six tools: `send_notification`, `ask_user`, `propose_scope`, `wait_for_answer`, `cancel_question` and `schedule_reminder`. See the [tools reference](/docs/agents/reference/tools). Those six are all Claude sees on a connector. The session, subscriber, campaign and flow tools need an API key and are not offered here.

A question blocks for up to about 55 seconds per call. If you need longer, Claude can check again with `wait_for_answer` and the same question id. Questions stay open for 10 minutes.

### Prompts to try [#prompts-to-try]

**Get pinged when a long task finishes:**

```text
When you finish this task, use Pushary to send me a notification with a short
summary of what changed.
```

**Ask before something irreversible:**

```text
Before you do anything destructive or irreversible, use Pushary to ask me to
confirm, and wait for my answer before continuing.
```

## Use a key link if Claude cannot sign in [#use-a-key-link-if-claude-cannot-sign-in]

Settings > Connections still offers a link with a key in it, behind **Client cannot sign in? Use a key link instead**. Click **Get a key link** to create one. It is for a client that cannot complete a sign-in. claude.ai rejects this kind of link, so use the plain URL there.

A key link expires after 90 days. The card warns you in the last 14 days. Treat it like a password: anyone with it can send you notifications until you revoke it.

## Disconnect or move the connector [#disconnect-or-move-the-connector]

To remove access, delete Pushary under **Connectors** in Claude. The URL stays the same if you add it again later.

To move a sign-in connection to a different workspace, click the trash button next to **Connected by sign-in as** in Settings > Connections and confirm **Detach from this workspace**. Claude stays signed in and picks a workspace on its next request.

For a key link, open **Client cannot sign in? Use a key link instead**. Click **Generate new key link** to replace it, or click the trash button and confirm **Revoke link**. The old link stops working right away. Paste the new link into Claude.

## Install with the Pushary plugin [#install-with-the-pushary-plugin]

The [Pushary for Claude plugin](https://github.com/Pushary/claude-plugin) bundles the shared skill and the same sign-in connector for Claude Chat and Claude Code. In Chat, open **Customize > Plugins > Add > Add marketplace**, add the plugin's GitHub URL and install **Pushary for Claude**. Then connect Pushary from the plugin's **Connectors** tab.

In Claude Code, run these two commands, then use `/mcp` to check the sign-in:

```text
/plugin marketplace add Pushary/claude-plugin
/plugin install pushary@pushary-claude-plugin
```

This plugin gives questions and notifications. Approval hooks for Claude Code come from the separate [Claude Code integration](https://github.com/Pushary/pushary-skill).

For Cowork, the [Pushary for Cowork plugin](https://github.com/Pushary/cowork-plugin) is still available under its original repository and install names. Add that repository as the marketplace, install **Pushary for Cowork**, and connect Pushary from its **Connectors** tab. Both plugins use the same connector and shared skill. Pick one per app, or you get duplicate connectors.

If your Claude version does not add the connector from the plugin, add the URL above by hand.

### Get the setup text from the CLI [#get-the-setup-text-from-the-cli]

```bash
npx pushary@latest cowork
```

This prints the connector URL, the same steps and the test prompt. `npx pushary@latest setup --agents cowork` does the same, without writing CLI hooks or saving a key. Add `--instructions` to print the standing instructions, or `--skill` to print the skill file to upload (for example `npx pushary@latest cowork --skill > SKILL.md`). `doctor` does not check a connector that lives in your Claude account.

Anthropic documents [Cowork plugin hooks](https://support.claude.com/en/articles/13837440-use-plugins-in-claude). This connector does not install or check native permission hooks. Local and cloud tasks can have different capabilities. Neither a skill nor a working MCP connection proves that Claude's own approval prompts are intercepted.

## Why did the test question not arrive? [#why-did-the-test-question-not-arrive]

Check these in order:

1. You signed in with the Pushary account named on the **Claude and ChatGPT** card.
2. Pushary is turned on in this conversation or Cowork session.
3. You allowed the tool call if Claude asked.
4. Your approval mode in Pushary sends questions where you expect them. In In agent mode, nothing goes to your phone.

The test passes when Claude reports the answer you gave. A printed setup link does not count.

## Next steps [#next-steps]

<Cards>
  <Card title="Set up your phone" description="Install the Pushary app and turn on notifications so questions reach you." href="/docs/agents/receiving-notifications" />

  <Card title="Approve risky commands with Claude Code" description="Hooks hold each risky command until you approve it on your phone." href="/docs/agents/guides/claude-code" />
</Cards>