All integrations

Google Chat

GOOGLE WORKSPACE · MESSAGING

Post and read in the spaces that person already belongs to.

Connect Google Chat with Fabriq Developer

Your user consents at Google Chat. The credential lands in a vault your agent cannot read, and the tool list it gets back is the intersection of that user’s grant and the agent’s own scopes.

provider “chat”
from af_sdk import AgenticFabriq

af = AgenticFabriq()                      # reads AF_APP_ID / AF_APP_SECRET

url = await af.initiate_connection(request, provider="chat")   # consent at Google Chat
return redirect(url)

async with await af.for_user(request) as session:
    tools = await session.get_tools()     # only what this user granted

Provider names are surfaces, not vendors, and the authoritative list is the capabilities endpoint rather than any page including this one — an unknown name returns 400 with the valid list. Fabriq Developer is free to start and needs no provider paperwork. Start free or read the quickstart.

Connecting Google Chat in practice

Reading Chat messages is a restricted scope, and the app-authenticated versions — chat.app.messages.readonly and chat.app.delete — additionally require a Workspace administrator to approve them. The limit that actually bites is per space: 1 standard write per second, so a bot posting a thread of updates is throttled at the space, not the project.

Scopes that draw scrutiny

  • https://www.googleapis.com/auth/chat.messages Restricted. Full message operations, which is the scope an agent that both reads and posts needs.
  • https://www.googleapis.com/auth/chat.messages.readonly Restricted even though it only views messages and reactions, so a read-only Chat agent is still in restricted territory.
  • https://www.googleapis.com/auth/chat.delete Restricted. Deletes spaces and removes file access.
  • https://www.googleapis.com/auth/chat.import Restricted. Imports data into Chat, which is how a migration writes history no user ever typed.
  • https://www.googleapis.com/auth/chat.app.messages.readonly Restricted and requires administrator approval, because it reads messages as the app rather than as a user.
  • https://www.googleapis.com/auth/chat.app.spaces Sensitive and requires administrator approval; the chat.app.* family is separately gated from the user-authenticated equivalents.

Rate limits

  • Per project per 60 seconds: message writes 3,000, message reads 3,000, message searches 300, membership writes 300, membership reads 3,000, space writes 60, space reads 3,000.
  • Per space per second: 15 standard reads, 1 standard write, 5 reaction-creation writes, 10 message writes during data import.
  • Per user per second: 1 custom emoji write and 15 reads, 1 section or availability write and 15 reads.
  • Exceeding a quota returns 429: Too many requests.

Who has to approve

A Workspace admin sets each app to Trusted, Limited, specific Google data, or Blocked, and unconfigured apps surface in an "Apps pending review" list the admin approves or dismisses. Chat is one of the products for which the admin can additionally restrict high-risk OAuth scopes — message deletion, import and message access — and the chat.app.* scopes require administrator approval outright.

Worth knowing

  • Space writes are capped at 60 per minute per project, twenty times lower than message writes, so creating spaces in bulk is the first thing to hit a wall.
  • The per-space write limit of 1 per second is the real design constraint; the 3,000-per-minute project figure is unreachable for a bot working in one space.
  • chat.bot is app authentication only — no user credentials and no domain-wide delegation support — so a bot token cannot act on a user’s behalf.
  • Data import gets a raised 10 message writes per second per space, which means migration throughput is not a guide to steady-state throughput.

Checked against Authenticate and authorize Chat apps (scopes) (2026-09-29), Chat API usage limits (2026-09-29), Workspace app access control (2026-09-29)

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

google_chat_add_memberWRITE

Add a member to a Google Chat space. IMPORTANT: You must first call google_chat_list_spaces to get the space_name.

chat.memberships
google_chat_create_spaceWRITE

Create a new Google Chat space (room). Returns the new space's name and details.

chat.spaces.create
google_chat_delete_messageWRITE

Delete a message from Google Chat. IMPORTANT: You must first call google_chat_list_messages to get the message_name.

chat.messages
google_chat_delete_spaceWRITE

Delete a Google Chat space. WARNING: This deletes all messages and cannot be undone. IMPORTANT: You must first call google_chat_list_spaces to get the space_name.

chat.delete
google_chat_get_messageREAD

Get a specific message from a Google Chat space. IMPORTANT: You must first call google_chat_list_messages to get the message_name.

chat.messages.readonly
google_chat_get_spaceREAD

Get details about a specific Google Chat space. IMPORTANT: You must first call google_chat_list_spaces to get the space_name.

chat.spaces.readonly
google_chat_list_membersREAD

List members of a Google Chat space. IMPORTANT: You must first call google_chat_list_spaces to get the space_name.

chat.memberships.readonly
google_chat_list_messagesREAD

List messages in a Google Chat space. IMPORTANT: You must first call google_chat_list_spaces to get the space_name.

chat.messages.readonly
google_chat_list_spacesREAD

List Google Chat spaces (rooms and DMs) the user has access to. Returns space names, types, and membership info.

chat.spaces.readonly
google_chat_remove_memberWRITE

Remove a member from a Google Chat space. IMPORTANT: You must first call google_chat_list_members to get the full member_name.

chat.memberships
google_chat_send_messageWRITE

Send a message to a Google Chat space. IMPORTANT: You must first call google_chat_list_spaces to get the space_name.

chat.messages.create
google_chat_update_messageWRITE

Update an existing message in Google Chat. IMPORTANT: You must first call google_chat_list_messages to get the message_name.

chat.messages
google_chat_update_spaceWRITE

Update a Google Chat space's settings. IMPORTANT: You must first call google_chat_list_spaces to get the space_name.

chat.spaces

Put Google Chat behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.