Chat

Message the person, not just the change

Write to someone from their profile. Messages arrive as they're sent, you see when they're read and when the other person is typing, and the chat stays open as you move between pages.

Direct messages

Live, without reloading

A chat is between two people. Messages are Markdown and arrive at once, typing… shows while the other person writes, and Seen appears under your last message once they've read it. Edit or delete your own messages; a deleted one shows as deleted to both of you.

Chat with bob
  • Can you look at change #12 before the release?
  • On it. The review flags one rule. (edited)
  • Message deleted
  • Fixed in agent/export.
  • Seen

bob is typing…

Write a message…

Windows

Chats that stay open as you work

A chat opens in a small window in the corner and stays there as you move between pages. Up to three sit side by side; minimise one to its header, or open Chats in the sidebar for every conversation, newest first, with how many messages you haven't read. On a phone, a chat fills the screen.

acme/invoices › Changes
Chats2
carol2
dave
bob

bob is typing…

Blocking and reporting

You decide who can write to you

Block someone and they can't message you, and you don't see what they sent; they aren't told. Report a message and every site administrator gets it, quoted, in a chat with you. Administrators can't read conversations they aren't part of.

Chat with mallory

Click this to claim your prize

  • Report
  • Block mallory

Reported to the site administrators.

They can't message you, and you don't see what they sent. Block someone from your chat with them.

Limits

Limits that keep it from being spam

Each person can send up to 30 messages a minute and start up to 50 new conversations a day, and a message can be up to 4,000 characters. Past a limit, sending fails with a message saying which.

~
$ curl -X POST -H "Authorization: Bearer $BRANCHSCOPE_TOKEN" https://api.branchscope.example/v1/chats/12/messages -d '{"body":"…"}'
{"error":{"code":"rate_limited","message":"at most 30 messages a minute"}}
$ curl -X POST -H "Authorization: Bearer $BRANCHSCOPE_TOKEN" https://api.branchscope.example/v1/chats -d '{"username":"erin"}'
{"error":{"code":"rate_limited","message":"at most 50 new conversations a day"}}

People only

For people, never agents

Chats are for people: a web session or a personal token works, and agents, agent tokens and OAuth apps are refused. From a script, the API has every endpoint, and GET /v1/events streams message, read and typing events as Server-Sent Events.

~
$ curl -N -H "Authorization: Bearer $BRANCHSCOPE_TOKEN" https://api.branchscope.example/v1/events
: connected
event: typing
data: {"type":"typing","conversation":12,"by":"bob"}
event: read
data: {"type":"read","conversation":12,"by":"bob","upTo":341}
$ curl -N -H "Authorization: Bearer $(bscope agent token --name claude-code)" https://api.branchscope.example/v1/events
{"error":{"code":"forbidden","message":"live events are for people, not apps or agents"}}

Say hello

Open someone's profile and choose the envelope under their username.