diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7c01af08..91001468 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog
+## 2.1.148
+
+- Fixed the Bash tool returning exit code 127 on every command for some users (a regression introduced in 2.1.147)
+
## 2.1.147
- Pinned background sessions (`Ctrl+T` in `claude agents`) now stay alive when idle, are restarted in place to apply Claude Code updates, and are shed under memory pressure only after non-pinned sessions
diff --git a/feed.xml b/feed.xml
index 0347f882..c7ef27f0 100644
--- a/feed.xml
+++ b/feed.xml
@@ -6,7 +6,14 @@
Anthropic
- 2026-05-21T20:39:15Z
+ 2026-05-22T01:16:46Z
+
+ https://github.com/anthropics/claude-code/releases/tag/v2.1.148
+ Claude Code v2.1.148
+
+ 2026-05-22T01:16:46Z
+ <p>• Fixed the Bash tool returning exit code 127 on every command for some users (a regression introduced in 2.1.147)</p>
+ https://github.com/anthropics/claude-code/releases/tag/v2.1.147Claude Code v2.1.147
@@ -621,49 +628,4 @@
<p>• Fixed a malformed hooks entry in settings.json no longer invalidating the entire file</p>
<p>• Voice mode: keybindings bound to Caps Lock now show an error since terminals don't deliver Caps Lock as a key event</p>
-
- https://github.com/anthropics/claude-code/releases/tag/v2.1.121
- Claude Code v2.1.121
-
- 2026-05-18T01:52:01Z
- <p>• Added alwaysLoad option to MCP server config — when true, all tools from that server skip tool-search deferral and are always available</p>
-<p>• Added claude plugin prune to remove orphaned auto-installed plugin dependencies; plugin uninstall --prune cascades</p>
-<p>• Added a type-to-filter search box to /skills so you can find a skill in long lists without scrolling</p>
-<p>• PostToolUse hooks can now replace tool output for all tools via hookSpecificOutput.updatedToolOutput (previously MCP-only)</p>
-<p>• Fullscreen mode: typing into the prompt no longer jumps scroll back to the bottom after you've scrolled up to read earlier output</p>
-<p>• Dialogs that overflow the terminal are now scrollable with arrow keys, PgUp/PgDn, home/end, and mouse wheel in both fullscreen and non-fullscreen modes</p>
-<p>• Clicking any line of a long URL that wraps across rows in fullscreen mode now opens the full URL</p>
-<p>• SDK and claude -p: CLAUDE_CODE_FORK_SUBAGENT=1 now works in non-interactive sessions</p>
-<p>• --dangerously-skip-permissions no longer prompts for writes to .claude/skills/, .claude/agents/, and .claude/commands/</p>
-<p>• /terminal-setup now enables iTerm2's "Applications in terminal may access clipboard" setting so /copy works, including from tmux</p>
-<p>• MCP servers that hit a transient error during startup now auto-retry up to 3 times instead of staying disconnected</p>
-<p>• The terminal tab session title is now generated in your configured language setting</p>
-<p>• Claude.ai connectors with the same upstream URL are now deduplicated instead of appearing as duplicates</p>
-<p>• Vertex AI: support X.509 certificate-based Workload Identity Federation (mTLS ADC)</p>
-<p>• Faster startup after upgrading: removed the Recent Activity panel from the release-notes splash</p>
-<p>• LSP diagnostic summaries now expand on click/ctrl+o and show the expand hint</p>
-<p>• SDK: mcp_authenticate now supports redirectUri for custom scheme completion and claude.ai connectors</p>
-<p>• OpenTelemetry: added stop_reason, gen_ai.response.finish_reasons, and user_system_prompt (gated behind OTEL_LOG_USER_PROMPTS) to LLM request spans</p>
-<p>• [VSCode] Voice dictation now respects the accessibility.voice.speechLanguage setting when no Claude Code language is configured</p>
-<p>• [VSCode] /context now opens a native token usage dialog</p>
-<p>• Fixed unbounded memory growth (multi-GB RSS) when processing many images in a session</p>
-<p>• Fixed /usage leaking up to ~2GB of memory on machines with large transcript histories</p>
-<p>• Fixed memory leak when long-running tools fail to emit a clear progress event</p>
-<p>• Fixed Bash tool becoming permanently unusable when the directory Claude was started in is deleted or moved mid-session</p>
-<p>• Fixed --resume crashing on startup in external builds</p>
-<p>• Fixed --resume failing on large sessions when a transcript line was corrupted by an unclean shutdown — the corrupt line is now skipped</p>
-<p>• Fixed thinking.type.enabled is not supported error when using Bedrock application inference profile ARNs</p>
-<p>• Fixed Microsoft 365 MCP OAuth failing with duplicate or unsupported prompt parameter</p>
-<p>• Fixed scrollback duplication when pressing Ctrl+L or triggering a redraw in non-fullscreen mode on tmux, GNOME Terminal, Windows Terminal, and Konsole</p>
-<p>• Fixed claude.ai MCP connectors silently disappearing when the connector-list fetch hits a transient auth error at startup</p>
-<p>• Fixed "Always allow" rules for built-in tools in remote sessions not surviving worker restarts</p>
-<p>• Fixed NO_PROXY not being respected for all HTTP clients when set via managed-settings.json under the native build</p>
-<p>• Fixed managed settings approval prompt exiting the session even when accepted — now applies settings and continues</p>
-<p>• Fixed /usage returning "rate limited" after a stale OAuth token — now refreshes automatically</p>
-<p>• Fixed invalid legacy enum values in settings.json invalidating the entire settings file</p>
-<p>• Fixed /usage dialog content being clipped when no-flicker mode is off</p>
-<p>• Fixed /focus showing "Unknown command" when the fullscreen renderer is off — now explains how to enable it</p>
-<p>• Fixed embedded grep/find/rg shell wrappers failing when the running binary is deleted mid-session — now falls back to installed tools</p>
-<p>• Reduced peak file descriptor usage during find in the Bash tool on large directory trees</p>
-