Skip to content

What the bot stores

The bot keeps a copy of messages in the server and a small profile for each member. This page says what is kept, for how long, and what leaves the bot.

  • The bot stores messages from the channels it can read, and a small profile for each member. No command lets a member search the stored messages.
  • The stored copy lives in a database that whoever runs the bot controls.
  • Features that use AI send text to Google’s Gemini service. Some also talk to Linear, the ticket tracker the team plans work in. Each feature’s section below lists exactly what is sent. Gemini features need a key from whoever runs the bot, and most are off until they switch them on.
  • Summaries and answers use only channels you can see.
  • Delete a message and its text is emptied. Meeting transcripts, summaries and ticket drafts expire.
  • Voice audio is never saved.

Some terms: an admin is a member with the Manage Server permission. Whoever runs the bot is the person who hosts it and switches features on. They can also limit the direct messages the bot starts to a list of people, which this page calls the reminder allowlist.

WhatKeptThen
MessagesUntil the message is deleted in DiscordThe text is emptied. The record stays. See When a message is deleted.
Message embeddings (a list of numbers that lets the bot search by meaning)While the message has textRemoved when the message is deleted or edited to have no text
Questions you ask the bot30 days by defaultThe whole record is deleted. If the message that tagged the bot is deleted, the question is blanked at once.
The text of a summary30 daysThe text is cleared. The record stays.
A ticket draft, with the suggested teamUntil the prompt ends, or 30 daysThe draft is cleared. The rest of the record stays.
The text of a meeting transcript or voice meeting90 days by defaultThe text is deleted. The summary, names and action items stay.
What you follow with /interestsUntil you remove itDeleted
Audio from a voice callNever written to diskGone once each piece is turned into text
Everything else belowKeptNothing deletes it. When you leave the server you are only marked as left.
KeptWhy
Your server display name, kept up to dateTo address you in messages
Your Discord IDTo know who you are
Your timezone and working hours, if you set themTo time reminders and summaries
Which Linear user you are, if the bot has linked you to one: the Linear user id, and whether the bot matched it by name or an admin set itTo assign your tickets to you and offer you your Linear teams. See Ticket prompts
Whether you have been sent the one-time setup direct messageSo it is sent only once
Whether you have left the serverMembers who left get no reminders
Your per-reminder choices: on or off, and any custom timeFrom /reminders
A record of each reminder sent to you, and each follow-up you set: when, whether it was sent, and why it failed if it didTo avoid duplicates and to send follow-ups later
What you follow with /interests: the person, topic, channels and extra note of each interest, and whether your digest is on, its time and cadenceTo write your personal digest. Deleted when you remove the interest
A record of each question you ask the bot, without message text or the answerTo enforce the daily limit and to improve answers. Deleted after 30 days
Which summaries an admin added you to as a recipient, by your Discord IDTo know who gets each summary
A record of each summary made for you: the period, whether it was sent, and the text of the summaryTo avoid duplicates. The text is cleared after 30 days
For a follow-up: the link to the message, and your note if you gave oneSo the reminder can point back to it
A record of each of your messages that led to a ticket prompt or matched an existing Linear ticketTo ask once per message and to count your daily limit
A record of each transcript you upload to the meetings channel, with the summary and action items the bot wrote. Also the action items that name you as the owner, and your name in the attendee list if it matched you. See Meeting transcriptsTo post the summary, to send you your action items and to file them once
A record of each voice meeting you started with /notes start: the voice channel, where the summary went, when it started and ended, the summary and action items, and the names of everyone who spoke. See Voice notesTo post the summary, to send the action items and to finish the meeting after a restart

The bot adds every member of the server to this list when it starts and whenever someone joins, whether or not they have used a command. Other bots are left out. It then keeps the list in step with the server’s member list.

The bot stores messages from these places:

  • Text channels and announcement channels.
  • Public threads and announcement threads. Posts in a forum channel are threads, so they are stored too.

It does not store voice or stage channels, private threads or the text chat of a voice channel, so the notice and summary the bot posts there are not copied. Messages from other servers and from direct messages are ignored, and so is the history of channels the bot cannot read.

For each message it keeps:

  • The text. For a forwarded message, this is the text of the message that was forwarded.
  • Who wrote it, by display name and ID, and whether the author is a bot.
  • The channel, the time sent, and the time last edited.
  • Whether it was a reply, and which message it replied to.
  • Whether it had attachments, and how many.

Normal messages and replies are kept. System messages, such as joins and pins, are skipped. Bot messages are kept too, including an answer it posts in a channel (a reply to a tag or a public /ask answer) and a meeting summary. Replies only you can see are not copied.

For each channel and thread it also keeps the name, the kind, the channel a thread belongs to, how far the bot has read its old history, and the Linear team an admin mapped to it, if any.

It does not keep the files themselves, link previews or reactions. When the bot starts it also reads the history of every channel it can see, so older messages are stored too.

The stored text, attachment details and edit time are updated to match. With embeddings on, the message is embedded again, and one edited to have no text loses its embedding.

The bot empties the text and marks the message as deleted. The record stays, with who wrote it and when, but the words are gone. Its embedding is deleted. The same happens to every message in a channel that is deleted, and to its threads. If a ticket prompt was made from the message, its draft text and suggested team are cleared too. If the message tagged the bot with a question, the saved question and the list of what the bot searched are blanked, and the list of searches of a question asked as a reply to it is blanked too.

If the bot was offline when a message was deleted, it catches most of these on the next start:

  • It re-reads the last 7 days of each channel and empties stored messages that are no longer there.
  • It empties the messages of any channel that was deleted while it was offline.

Two cases are missed and keep their stored text:

  • A message sent more than 7 days ago.
  • The messages of a thread that was deleted while the bot was offline, unless its parent channel was deleted too.

The bot marks you as having left. You get no more reminders or scheduled summaries, and your pending follow-ups are skipped. Your profile and your stored messages are not deleted. If you come back, you are marked as present again.

No command lets you search messages yourself. The bot has a search of its own, which summaries and questions use. So it can find messages by meaning, it turns each message into a list of numbers, called an embedding.

Embeddings are one case where message text leaves the bot. Others are tagging the bot, questions, summaries, ticket prompts, meeting transcripts and voice notes.

Embeddings are on by default but do nothing until whoever runs the bot adds a Gemini key. Then the bot sends each message’s text to Google’s Gemini service, with the author’s display name and the channel name. A short message or a reply goes with up to three earlier messages from the same channel, and the message it replied to, so it makes sense on its own. The numbers Gemini returns are stored next to the message and removed when the message is deleted or edited to have no text. Bot messages, deleted messages and messages with no text are not sent.

When you tag the bot in a message, it reads that message to decide whether you are asking for a follow-up, asking a question or neither. This needs a Gemini key. Without one, nothing is sent.

Goes toWhatWhen
Google GeminiThe text of the message that tags the bot, with the mention removed and cut to the first 2000 characters. No name, Discord ID or channelEach time you tag the bot, up to 20 times per hour from you, and only when the message has text besides the mention

A tag counts when it names the bot or its role, and only when reminders are on and you are allowed to get them, or when asking is on. The bot never logs the text, and a reply in the channel never repeats your message. A follow-up saved this way keeps the link to a message, not your note.

Asking is off unless whoever runs the bot switches it on, and it needs a Gemini key. When you ask, text leaves the bot.

Goes toWhatWhen
Google GeminiYour question, your display name and Discord ID, and whatever the bot’s searches return to the model: messages (each cut to 300 characters) with author names, channel names, ids and times, meeting titles, summaries, action items and transcript fragments. Only what you can see, and for a public answer only what everyone in that channel can seeEach time you ask, with /ask or by tagging the bot with a question
Google GeminiThe question on its own (at most 500 characters), to find messages by meaningEach time you ask
Google GeminiThe search phrasings the model writes while it searches (up to 5 per search, each at most 200 characters), to find messages by meaningEach search the model runs, only while embeddings are on
  • /ask answers in a reply only you can see, unless you set public to true. A tag that is a question is answered in the channel as a reply to your message. Say nothing in a public question that you do not want the channel to see.
  • The bot searches only what you can see right now: channels you can view, and meetings posted in those channels. Linear is not searched.
  • A public answer (a tag, or /ask with public) is narrowed to what every reader of that channel can see: the channel or thread’s parent and its threads, and channels everyone can read, with their threads. A channel with a role or member permission setting that denies View Channel or Read Message History does not count as open to everyone. Manage Server does not widen it.
  • A public answer is a message in the channel, so it is stored with the other messages and stays until it is deleted, even after the messages it came from are deleted.

What is kept:

  • A record of each question: your Discord ID, the channel, the question text, the search words the model used (cut to 500 characters each), the ids of the messages and meetings it found and cited, whether it answered, which model, how long it took, the tokens used (a measure of how much AI work it took) and your thumbs up or down. Never the answer or any message text.
  • The record counts toward your limit of 50 questions a day. Whoever runs the bot can set a different limit, and there is a daily limit for the whole server too.
  • The record is deleted after 30 days, or the number of days whoever runs the bot chose. Clean-up runs at every start and then daily.
  • If you delete the message that tagged the bot, or its channel is deleted, the saved question and the list of searches are blanked, and a tag whose message is already deleted is not answered.

Summaries are off unless whoever runs the bot switches them on, and they need a Gemini key. When one is made, message text leaves the bot.

Goes toWhatWhen
Google GeminiMessages the summary reads, each cut to 300 characters, with the author’s display name and Discord ID, the channel name and ID, the message ID and the time it was sent. Linear ticket numbers, titles, links, dates, status, descriptions (cut to 1000 characters) and assignee names. The summary’s name, its description and the admin’s noteEach time a summary is made
Google GeminiThe search phrase the model writes while it searches (at most 200 characters), to find messages by meaningEach search the model runs, only while embeddings are on
LinearOnly questions about teams, projects and tickets: the team, the project, the period, the review status name, or one ticket number. No Discord message textEach time a summary is made, and when an admin lists summaries, picks a team or project, creates a summary or maps a channel

Summaries write nothing to Linear. The bot never logs message content.

Who gets what:

  • A scheduled summary is made for its recipients only: people or roles an admin added. The reminder allowlist, if set, limits scheduled summaries too. Anyone with Manage Server can ask for any summary with /summary now.
  • It uses only the channels an admin mapped to the summary’s Linear team, and threads and forum posts under them.
  • Within those, it uses only channels you can see yourself: you need View Channel and Read Message History. This is checked live each time. Manage Server does not widen it.
  • If you can see none of them, no summary is made for you.
  • People who can see exactly the same channels over the same period may share one Gemini request. Nobody sees a channel they cannot see.
  • You get the summary as a direct message on schedule, or as a private reply to /summary now, never in a channel.

The text of each summary is cleared once it is 30 days old. The clean-up runs at start and about daily while scheduled summaries run, so the text can stay up to a day longer, or until the next restart if summaries are switched off. The record of when it was made and whether it was sent stays.

Interests use the same switch, Gemini key and daily limit as summaries. Your digest is a personal summary with you as the only recipient.

Goes toWhatWhen
Google GeminiYour display name and Discord ID, your interests (person’s Discord ID, topic, channel IDs and note), plus the messages the digest reads from channels you can see, in the same form as for a summary. Your own recent messages, so it can find what you said you would follow up onEach time a digest is made, scheduled or with /interests now
Google GeminiThe search phrase the model writes while it searches (at most 200 characters), to find messages by meaningEach search the model runs, only while embeddings are on
  • Your interests are stored until you remove them. Removing one deletes it. Pausing the digest keeps them.
  • The digest reads every stored channel you can currently see, and the threads under them. This is checked live each time, and if the bot cannot tell, it uses nothing. Manage Server does not widen it.
  • Following a person needs no consent from that person. It shows you only what they posted in channels you can see. They are not told and cannot opt out.
  • A digest with nothing in it is not sent and is recorded as skipped. Sent digests are cleared after 30 days like any summary.
  • Digests are direct messages, or a private reply to /interests now, never posted in a channel.

Ticket prompts are off unless whoever runs the bot switches them on, and they need a Gemini key and a Linear key. The bot then reads each new message you post and may send you a direct message offering a Linear ticket. Nothing is filed unless you send the form.

Which of your messages are checked:

  • Only a new message, posted live in a channel the bot stores. Edits, older history, other bots and direct messages are never checked.
  • Only if it has at least 8 words once code, links, emoji and mentions are removed.
  • Only if you are allowed: the reminder allowlist, if set, also limits ticket prompts.
  • At most 20 messages per hour from you are checked.
Goes toWhatWhen
Google GeminiThe text of your message, cut to the first 4000 characters. No name, Discord ID or channelEach time one of your messages is checked
Google GeminiThe text of your message again (the first 4000 characters), and the name and one-line Linear description (cut to 300 characters) of each team you are offered, so the model can suggest a team. For a member linked to Linear that includes their private teams. No name, Discord ID or channelOnly when the message looks like a feature idea, Linear has no ticket that clearly matches, and you are offered two or more teams
Google GeminiThe draft ticket the model wrote, and for up to 5 Linear tickets: the number, title and description (cut to 300 characters)Only when Linear found tickets that may match
LinearA short search phrase that the model wrote from your message. It is asked for 2 to 5 words and is cut to 100 characters. If it writes none, the draft title is used. Public teams only, archived tickets left outEach time a message looks like a feature idea
Google GeminiThe title and description you send (the description cut to 1000 characters) and the names of the labels your team can use, so the model can pick up to 3. No name, Discord ID or channelOnly when you press Create ticket and send the form, and only when the bot has a Gemini key
LinearA new ticket: the title and description you send, the team, the cycle (Linear’s name for a sprint) if you picked one, the Linear user it is assigned to if you are linked, the labels the model picked, and a note with your display name, your Discord ID and a link to your messageOnly when you press Create ticket and send the form
LinearThe list of Linear users with their names and display names, which teams you belong to, and the cycles of a team. Nothing about your messages. The bot never keeps a Linear name or email, only your Linear user idWhen the bot matches members by name, and when a form opens or is sent

What you get and who sees it:

  • The prompt is a direct message to you alone, never posted in a channel.
  • If Linear already has a ticket that clearly matches, you get no prompt. If some look similar, up to 3 are listed in the prompt.
  • If you are linked to a Linear user, you are offered the Linear teams you belong to, private ones included, and the ticket is assigned to you. If you are not linked, or are on no team, you are offered the public teams and the ticket is unassigned. The bot links members by exact name, and admins can change a link.
  • A created ticket is visible to everyone in the Linear workspace, with your display name, your Discord ID and the link to your message. Linear records it as created by the owner of the bot’s key, not by you.
  • When you are offered two or more teams, the model may suggest one, and the form opens with it selected. For a linked member that means private team names and descriptions are sent to Gemini. You can change the team, and nothing is filed until you send the form.
  • Press No thanks and nothing is filed. The bot never asks about that message again.

What is kept, in a record per message:

  • Your Discord ID, the message ID and channel ID, what happened (asked, creating, created, dismissed, failed or matched an existing ticket), and the reason if sending failed.
  • The Linear ticket number and link, if one was created or matched.
  • A draft title and description, and the id of the team the bot suggested for the form, if it suggested one. Team names and descriptions are not kept. If a ticket fails to create, the text you typed is saved so you can try again.

Draft text and the suggested team are cleared when you create the ticket, press No thanks, the prompt fails, or your message or its channel is deleted. A draft still there after 30 days is cleared the next time the bot starts, even when ticket prompts are off. The rest of the record stays. A ticket already created in Linear is not removed by any of this.

If you delete your message, nothing is filed, and Create ticket on a prompt you already received answers Your original message was deleted, so I closed this prompt. Editing your message changes nothing. The bot never logs the text of your message or the draft.

Meeting transcripts are off unless whoever runs the bot switches them on. They need a Gemini key, and use a Linear key if there is one. A transcript is read only from a file uploaded to the meetings channel, or from a voice call (see Voice notes). Pasted text is not read as a transcript.

Goes toWhatWhen
Google GeminiThe text of the uploaded transcript, up to the first 400,000 characters, and the file name. No Discord name, ID or channelEach time a transcript is uploaded. One over 200,000 characters is sent in two parts, then the partial results are sent once more to be merged
Google GeminiFor each action item and topic: its title and description (cut to 300 characters), and the number, title and description (cut to 300 characters) of up to 5 Linear tickets that may matchEach upload, only when the bot has a Linear key and the search finds tickets
Google GeminiThe meeting title, its decisions and the action item titles (the first 4000 characters), and the name and one-line Linear description (cut to 300 characters) of each public team, so the model can suggest a team for the team drop-down. No Discord name, ID or channelEach upload, only when the bot has a Linear key, the transcript named no usable team, and there is new work to file
Google GeminiThe item’s title and description (cut to 1000 characters) and the names of the labels the team can use, so the model can pick up to 3. No name, Discord ID or channelOnly when someone presses Create selected, and only when the bot has a Gemini key
LinearShort English searches made from the action items and topics, public teams only, and a lookup of the ticket numbers said in the meeting (up to 20). Nothing else from the transcriptEach upload, only when the bot has a Linear key
LinearA new ticket: the item’s title and description, the team, the Linear user it is assigned to if the person is linked, the labels the model picked, and a note with the meeting title, a link to the summary, the approver’s display name and Discord IDOnly when someone presses Create selected
LinearA change to an existing ticket: its status set to Backlog, Todo, In Progress or In Review, or a comment with the item’s title and description and the same note as a new ticket. The bot never sets Done or CanceledOnly when someone presses Apply selected, Apply update or Create selected, and only when an admin has linked that person to a Linear user on the ticket’s team

What you should know before you upload:

  • The channel is visible to everyone in the server. The summary names the attendees, lists the decisions and discussion and shows each action item with its owner.
  • Anyone who can post in the channel can upload. The reminder allowlist does not stop an upload from being read. It only decides who is sent action item direct messages. Each person can have 5 transcripts read per day, and the server has a daily total.
  • The summary post stays. It is stored like any bot message and is not embedded. Deleting the upload does not remove the summary or the action items.
  • The transcript text is deleted after a set time. It lives in its own table and nowhere else, and is deleted once older than MEETING_TRANSCRIPT_RETENTION_DAYS days, 90 by default, at every start and then daily. The text is saved before the AI reads it, so a transcript that failed to process is kept for the same time.
  • The rest stays. The summary, attendee names, action items, who uploaded it, the id of the suggested team, the cycle each owner picked and the links to tickets are kept. A ticket already created in Linear is not removed.
  • The channel is an ordinary channel. The file itself is never stored in the message copy or embedded. Text typed in the channel, including any you wrote with the upload, is stored and embedded like any other message, and so is a transcript someone pastes as text.

Who gets what:

  • Each person named as an owner gets a direct message with their action items, all already selected. Only they can press its buttons. Nothing is sent without a Linear connection. Items with no clear owner, or an owner the bot could not match to exactly one member, go to whoever uploaded the file.
  • An existing ticket is changed only when that person presses the button, has an admin-made link to a Linear user and is on the ticket’s team. A status change or a comment is visible to everyone in the Linear workspace, with the same note as a new ticket.
  • A ticket is created only when that person presses Create selected or Create ticket. It is visible to everyone in the Linear workspace, with the meeting title, a link to the summary, the approver’s display name and Discord ID. The description is made plain text first, so a link or image in a transcript never reaches the ticket as one. Linear records it as created by the owner of the bot’s key.
  • Dismiss all and Dismiss file nothing.

The bot never logs the transcript, the summary or any ticket text. Logs hold ids, counts and error types.

Voice notes are off unless whoever runs the bot switches them on. They need meeting transcripts on too, and a Gemini key. The bot never joins by itself: a member in the channel runs /notes start or uses Invite to voice on it.

Goes toWhatWhen
PlaySafe speech-to-text serversThe audio of each short piece of speech, as a short audio file. No name, ID or channelWhile notes are being taken, one piece at a time. A server is chosen at random and the next is tried if it fails
Google GeminiThe transcript as Display Name: words lines, up to the first 400,000 characters. The names are the display names of people who spokeOnce, when the notes are written. The rest is as for a meeting transcript

What you should know before you speak in a call where the bot is:

  • Everyone who speaks is transcribed. There is no per-person opt-out: leave the channel if you do not want to be included. The bot says this in the voice channel’s chat as soon as it joins.
  • The audio is not kept. It is held in memory only until each piece has been turned into text, and is never written to disk.
  • Words are kept, not time stamps. The transcript text is deleted after MEETING_TRANSCRIPT_RETENTION_DAYS days, 90 by default, along with the name of the speech-to-text model that wrote it. The summary, the names of who spoke, the action items and who started the notes stay.
  • Where the summary lands depends on the channel. If everyone in the server can see and join the voice channel, the summary is posted in the shared summary channel and anyone in the server can read it. If not, it is posted only in the voice channel’s own text chat, which the people who can access that voice channel can read.
  • A restart does not lose the meeting. If the bot is stopped mid-meeting it saves the transcript text and writes the notes at the next start, and a direct message tells whoever started them. If the AI service is down when the notes are written, the text is kept, but the notes follow by themselves only in one case, see When the AI is down.
  • A call with almost nothing said is dropped. If the transcript is under 200 characters, no notes are written and nothing is stored.
  • Admins can block a channel. In a blocked channel members cannot start notes, though a member with Manage Server still can.
  • Who started it is recorded, by Discord ID.

The bot never logs the speech, the transcript or the summary. Logs hold ids, counts and error types. Anything else, such as tickets and action item messages, is as for meeting transcripts.

Reminder rules, summaries with their recipients and mapped channels, blocked voice channels and the summary channel name are stored without an expiry. For a blocked voice channel and the summary channel name, the bot also keeps the Discord ID of the admin who set it. Reminder rules and summaries are switched off, never deleted.

  • Reminder messages never contain the text of anyone’s message. A channel reminder may link to your previous post, and a follow-up links to the message you saved. Links only.
  • Replies to your commands are private to you, and anything the bot starts on its own is a direct message to you. The exceptions are the meetings channel (replies to an upload and the summary, readable by everyone in the server), a voice channel’s text chat (the notice and result of voice notes), and places you ask for it: a tag with a question, or /ask with public set to true, gets a reply in the channel.
  • Where a reminder checks whether you posted, it only asks whether a post exists. It does not read it out.