diff --git a/docs/changelogs/README.md b/docs/changelogs/README.md
index 3bc64c722f34f..1dc1c8c5a18a6 100644
--- a/docs/changelogs/README.md
+++ b/docs/changelogs/README.md
@@ -9,11 +9,12 @@ These changelogs are currently not kept in sync with GitHub releases. Use [GitHu
Run this command to generate release notes:
```shell
+git checkout main; git pull; git fetch --all
export CODER_IGNORE_MISSING_COMMIT_METADATA=1
export BRANCH=main
./scripts/release/generate_release_notes.sh \
- --old-version=v2.2.1 \
- --new-version=v2.2.2 \
+ --old-version=v2.3.0 \
+ --new-version=v2.3.1 \
--ref=$(git rev-parse --short "${ref:-origin/$BRANCH}") \
- > ./docs/changelogs/v2.2.2.md
+ > ./docs/changelogs/v2.3.1.md
```
diff --git a/docs/changelogs/v2.3.0.md b/docs/changelogs/v2.3.0.md
new file mode 100644
index 0000000000000..8e77936066793
--- /dev/null
+++ b/docs/changelogs/v2.3.0.md
@@ -0,0 +1,97 @@
+## Changelog
+
+### Important changes
+
+- Coder now only displays license warnings to privileged users (#10096) (@sreya)
+
+### Features
+
+- Add "Create Workspace" button to the workspaces page (#10011) (@Parkreiner)
+
+- Add support for [database encryption for user tokens](https://coder.com/docs/v2/latest/admin/encryption#database-encryption).
+ > This is an [Enterprise feature](https://coder.com/docs/v2/latest/enterprise).
+- Show descriptions for parameter options (#10068) (@aslilac)
+
+- Allow reading the agent token from a file (#10080) (@kylecarbs)
+- Adjust favicon based on system color-scheme (#10087) (@kylecarbs)
+- Add API support for workspace automatic updates (#10099) (@spikecurtis)
+- Show user limit on active users chart (#10101) (@mtojek)
+- Add logging for forwarded TCP connections (@spikecurtis)
+- Add /icons page to browse static icons for templates, `coder_apps`, and parameters (#10093) (@aslilac)
+
+ > Navigate to `https://coder.your-company.com/icons` to view this page.
+- You can select icons from the emoji picker in template settings (#10119) (@aslilac)
+
+- Add shebang support to scripts (#10134) (@kylecarbs)
+- Improve logging for reconnectingPTY (web terminal) connections (@spikecurtis)
+- Improve logging for speedtest connections (@spikecurtis)
+- Add `request_id` to HTTP trace spans (#10145) (@coadler)
+- Add `external-auth` cli (#10052) (@kylecarbs)
+- Add warning message when trying to delete active template (#10142) (@Parkreiner)
+- Add `--version` flag to `coder templates pull`, default to active version (#10153) (@coadler)
+- Support configurable web terminal rendering (#10095) (@sreya)
+- Allow prefixes at the beginning of subdomain app hostnames (#10150) (@deansheather)
+- Failed template versions can be archived to hide them from the UI (#10179) (@Emyrk)
+
+- Add --parameter flag to `exp scaletest` command (#10132) (@johnstcn)
+- Add `coder users delete` command (#10115) (@coadler)
+- Create a "Load More" button for previous builds (#10076) (@BrunoQuaresma)
+- Parameters can now be disabled via "Open in Coder" buttons (#10114) (@Kira-Pilot)
+
+### Bug fixes
+
+- Allow auditors to query deployment stats and insights (#10058) (@kylecarbs)
+- Update the validation url for GitHub enterprise (#10061) (@kylecarbs)
+- Allow all environment variables to fallback prefix to `HOMEBREW_` (#10050) (@kylecarbs)
+- Change alpha badge color to violet (#10029) (@sreya)
+- Add `--version` flag to the root to support migrating customers (#10063) (@kylecarbs)
+- Only allow promoting successful template versions (#9998) (@aslilac)
+- Fix failed workspaces continuously auto-deleting (#10069) (@sreya)
+- Add build status favicons based on system theme (#10089) (@kylecarbs)
+- Use proper state in system theme (#10090) (@kylecarbs)
+- Apply the same border for button groups (#10092) (@kylecarbs)
+- Use proper react hook for favicon theme (#10094) (@kylecarbs)
+- Invert the favicon on dark mode (#10097) (@kylecarbs)
+- Update ErrorDialog logic and tests (#10111) (@Parkreiner)
+- Check for nil pointer in AwaitWorkspaceAgents (@spikecurtis)
+- Properly trim spaces so multi-line shebang executes (#10146) (@kylecarbs)
+- Apply default `ExtraTokenKeys` to oauth (#10155) (@kylecarbs)
+- Use query to get external-auth by id (#10156) (@kylecarbs)
+- Correct escaping in test regex (#10138) (@spikecurtis)
+- Use CRC32 to shorten app subdomain (@mtojek)
+- Use is-dormant instead of dormant_at (#10191) (@sreya)
+- Append external auth env vars (#10201) (@kylecarbs)
+- Ignore spurious node updates while waiting for errors (#10175) (@spikecurtis)
+- Stop leaking User into API handlers unless authorized (@spikecurtis)
+- Fix log spam related to skipping custom nice scores (#10206) (@sreya)
+- Remove Parallel() call after timeout context (#10203) (@spikecurtis)
+- Prevent sqlDB leaks in ConnectToPostgres (#10072) (@mafredri)
+- Properly check for missing organization membership (@coadler)
+- Impvove ctx cancel in agent logs flush, fix test (#10214) (@mafredri)
+- Properly detect legacy agents (#10083) (@coadler)
+- 5d5a7da67 fix(scaletest): output error and trace instead of {} for json output (#10075) (@mafredri)
+- ed8092c83 fix(scaletest/createworkspaces): address race condition between agent closer and cleanup (#10210) (@johnstcn)
+- b3471bd23 fix(scaletest/dashboard): increase viewport size and handle deadlines (#10197) (@johnstcn)
+- e829cbf2d fix(scaletest/dashboard): fix early exit due to validate (#10212) (@johnstcn)
+- Disable auto fields when they are disabled in the template settings (#10022) (@BrunoQuaresma)
+- Fix chart label depending on interval (#10059) (@BrunoQuaresma)
+- Fix users page for template admins (#10060) (@BrunoQuaresma)
+- Change `utils/delay` import path (#10065) (@coadler)
+- Fix logo width on sign in (#10091) (@BrunoQuaresma)
+- Fix week range for insights (#10173) (@BrunoQuaresma)
+
+### Documentation
+
+- Update offline Terraform provider config (#10062) (@ericpaulsen)
+
+---
+
+Compare: [`v2.2.1...v2.2.2`](https://github.com/coder/coder/compare/v2.2.1...v2.2.2)
+
+## Container image
+
+- `docker pull ghcr.io/coder/coder:v2.2.2`
+
+## Install/upgrade
+
+Refer to our docs to [install](https://coder.com/docs/v2/latest/install) or [upgrade](https://coder.com/docs/v2/latest/admin/upgrade) Coder, or use a release asset below.