DisclaimerUnofficial, and not affiliated with Anthropic. Nearly all of this is read straight out of what ships: npm bundles, captured prompts, published docs. Anthropic's own notes go in verbatim, marked as theirs. The rest is my reading, and every entry carries the strings behind it. If one looks wrong, vote it down and say why.
Discord bot
Every Claude Code release, in your server.
It watches npm, reads the bundle, and posts what actually changed: the count, the handful worth your attention, and how much of it Anthropic never wrote down. Setup is about a minute. It cannot read a single message in your server.
Asks for View Channel, Send Messages, Embed Links. Nothing else, and no privileged intent.
01 / The post
This is what lands in the channel.
One embed per release, built from the same run that builds the page. The counts are real counts, the highlights are the entries that led the changelog, and the link goes straight to the full read.
@claude-code Claude Code v2.1.228 changelog is live
CC Claude Code changelogs
v2.1.228 changelog is live
41 changes. Anthropic documented 6. The other 35 appear in no official note.
A release that spends most of its weight on the agent loop: subagent isolation gets a real worktree, and the permission prompt stops asking twice for the same command. The rest is telemetry plumbing.
Worktree isolation for spawned agentsSubagents get their own checkout instead of sharing yours.
Permission decisions now cache per sessionOne approval covers the same command for the rest of the run.
New /loop dynamic pacingThe model picks its own interval when you give none.
What's in it9 use now · 17 worth knowing · 15 coming
On npmlatest · next
Today at 09:14
Read all 41 changesAnthropic's notes
A thread was started: v2.1.228. Optional, off until you turn it on.
TimestampSet to when the version was released, so it does not drift with whenever the post went out.
Announcement channelsCrossposted automatically, so other servers can follow the channel without inviting the bot.
MentionsOne role, the one you picked. There is no way for it to ping @everyone at all.
02 / The feed
Six things it will tell you.
Each one is a separate kind with its own embed. Four of them you can switch off per server, two of those stay off until you ask for them, and any of them can go to a channel of its own.
A release is outnpm has a new version and the changelog run has started. The gap between this and the finished page is usually half an hour.On by default
The changelog is liveThe full read is published. This is the post above, and the one every server gets.Always
npm's stable channel movedA version that shipped days ago is now what npm install gives you. Usually nobody announces this anywhere.Always
Anthropic posted their own notesTheir notes land after the fact, sometimes days later. This one goes into the release's thread, or as a reply to the original post, and it never pings.On by default
Anthropic edited the docsPages added, edited and removed across their published documentation, with line counts and a link to the diff.Off until you opt in
Anthropic is having an incidentEvery incident on status.claude.com, from investigating through to resolved, with what it is affecting. This is the one thing the bot watches by itself rather than being told about. It covers every Anthropic service rather than Claude Code alone, and picking individual ones is not built yet.Off until you opt in
The build is waiting on npmThe version is on the registry but the platform binary is not downloadable yet, so nothing can be read from it.Owner feed
Three more kinds exist and none of them reaches a server: the waiting-on-npm card above, plus two pipeline health feeds. A server can never be subscribed to any of them by accident.
A release is out. Sent the moment the binary is readable. On this one the finished changelog followed twenty minutes later. v2.1.235, 2026-08-18.The changelog is live. The post section 01 takes apart, as it actually arrives, with the thread it opened underneath. v2.1.235, 2026-08-18.npm's stable channel moved. A version that shipped days earlier becomes what an install gives you. Nobody else announces this. 2026-08-18.Anthropic edited the docs. Every page that moved, with its line count and a link to the diff. Off until you turn it on. 2026-08-15.The build is waiting on npm. The owner feed, shown here because it is the one kind you cannot subscribe a server to. v2.1.235, 2026-08-18.Anthropic posted their own notes. Two hours after the changelog here, in the release's own thread, with no ping. v2.1.235, 2026-08-18.
03 / Setup
One panel. No dashboard, no account.
/changelog config opens this, only you can see it, and every press re-checks Manage Server before it writes anything. There is nowhere else to configure it, and nothing to sign into.
Where this server receives changelog announcements
Channel
#claude-code
Mention
@claude-code
Early notice when a release drops
on
Discussion threads
off
Anthropic's own notes when they land
on
Documentation changes
off
Anthropic service incidents
off
Pick a channel Pick a role to mention
Early notice: onThreads: offAnthropic's notes: onDocs changes: offService incidents: offPer-announcement channelsMention nobodyTurn announcements off
/changelog set-channelAnnounce new Claude Code releases in this channel. It checks it can actually post there before it accepts one.
/changelog configOpen the configuration panel for this server.
/changelog statusShow where announcements are going, every toggle, and whether the bot is connected right now.
/changelog latestShow the most recent changelog announcement, just to you.
/changelog testPost the most recent changelog to the configured channel, without pinging anyone. Pass threads: true to open one as well, so you know the bot can before a real release tries it.
/changelog disableStop announcing releases in this server. Reversible, and it forgets nothing else.
Per-announcement channels opens a second view where any kind can be pointed at a channel of its own: releases in one, documentation edits in another, incidents somewhere nobody is trying to read. Anything you do not move stays on the default channel. Every command needs Manage Server, checked on the command and again on every button press, so handing the command to a lower role does not hand out the settings.
04 / Under it
A Discord outage costs you nothing.
A release run is expensive and it happens once. So the announcement is written down before anything is sent, and the sending is allowed to fail.
Durable queueEvery announcement is on disk before the pipeline is told it was accepted. A restart mid-fanout resumes and nothing is lost.
Backoff, then stopA transient failure retries at 30s, 2m, 8m and 32m. A permanent one is abandoned rather than hammered.
DeduplicatedEach release carries an idempotency key, so a pipeline retry cannot post the same release twice to five hundred servers.
Fast fanoutEight servers are posted to at once, inside Discord's own rate limit, and the queue drains from there.
It unsubscribes itselfDelete the channel or remove its permissions and the bot clears its own config instead of piling up 403s forever.
Nothing is recreatedSchema changes only ever add. A server's settings have never been dropped by a deploy and cannot be.
05 / The ask
What it cannot do.
The interesting part of a bot's permissions is the ones it never asks for. This one runs on the Guilds intent alone, which is not privileged and never will be.
NoIt cannot read your messages.Message Content is a privileged intent and this bot does not have it. There is no version of it that can see what anyone typed.
NoIt cannot see your member list.Server Members is the other privileged intent, and it is not requested either. It knows a role id you gave it and nothing about who holds it.
NoIt cannot ping everyone.There is exactly one place a mention can be built and it only ever names the single role you configured. There is no setting for @everyone, and the code cannot build one.
YesThree permissions.View Channel, Send Messages, Embed Links. Threads want a fourth and it is a separate, optional invite.
06 / Add it
Three steps, about a minute.
Invite it. The link asks for the three permissions above and nothing else.
Run /changelog set-channel. Pick where the posts go. It refuses a channel it cannot post in and tells you which permission is missing.
Run /changelog test. The most recent release lands in that channel, with no ping, so you can see it before a real one arrives.