Skip to main content
An AI assistant never sends a message in one step. It writes a draft, shows it to you, and sends it only after you approve that exact text. A message that an assistant sends for you carries a small label, for example “via Claude”.

Draft then send

  1. The assistant drafts. draft_message writes the draft into a conversation: a direct message, a group’s Main chat or a channel. The draft is not sent. The tool returns the draft, its revision, a plain text preview, and instructions to show the draft to you and wait.
  2. You see it in two places. The assistant shows you the draft. The draft also appears in your Workchats message box for that conversation, live on every device you are signed in on.
  3. You say yes. Only then does the assistant call send_draft with the draft’s id and the revision you approved.
  4. Workchats sends it as you. The message goes through the same checks, delivery and notifications as a message you type.
Clients such as Claude and ChatGPT ask you before they call send_draft, because it is marked destructive. Still, read the draft before you approve it.

If the draft changes

Each change to a draft raises its revision:
  • the assistant drafts again to the same conversation, which replaces its earlier draft there
  • you change the draft’s text in Workchats
send_draft with an older revision sends nothing. It returns the draft_changed error with the new text and revision. The assistant must show you the new text and ask again. A repeated send_draft never sends twice. The second call gets draft_not_pending.

What you can do with a draft in Workchats

The draft card is in Workchats Web. It is rolling out in the Mobile app. Until your app has it, approve drafts in the assistant.
In the conversation, the draft shows above your message box, with the assistant’s name. You can:
  • Send it yourself. It is sent as a normal message from you, with no “via” label.
  • Change it. The assistant must ask you again before it can send.
  • Discard it. The assistant can no longer send it.

Rules

  • One assistant connection has at most one pending draft in each conversation. A new draft there replaces it.
  • A draft expires 24 hours after its last change. An expired draft can’t be sent.
  • A draft is visible only to you. Another person never sees it, and another assistant connection can’t send it.
  • The body is 1 to 4,000 characters. To mention someone, write @ and their full name in the body, and give their usr_ id in mentions. A mention of a person who is not in the conversation is dropped, and warnings says so.
  • reply_to_id must be a message of the same conversation.
  • to drafts a direct message to a person without a conversation id. It opens the direct message if it doesn’t exist yet.
  • Drafts count toward the limit of 30 drafts and sends an hour. See Limits.
  • When a draft is sent, discarded or expires, Workchats erases its text. A sent draft lives on as its message.

The label on sent messages

A message that an assistant sent with send_draft stores the assistant’s name, for example “Claude”, “ChatGPT”, “Cursor” or “VS Code”, cut to 40 characters. Workchats shows it under the message as “via Claude”. A message you type, and a draft you send yourself from Workchats, never carries it. Tools return the label too: a message in read_conversation or a search result has via_client, null for a message nobody sent through an assistant.
The label shows in Workchats Web. It is rolling out in the Mobile app. It is not yet in push notifications, chat list previews, search results in the app, or reply previews.

Who decides

A company admin picks the label policy in the admin console: The choice applies when the assistant sends the message. A message that is already sent keeps the label it had.