@mulmoclaude/core 5.5.0 → 5.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -152,6 +152,45 @@ checked**. Open the body with a line saying the answer came from this lookup and
152
152
  is awaiting maintainer review — it is a draft, not documentation. Never edit
153
153
  `bug-report-faq.md` yourself.
154
154
 
155
+ ## "Failed to authenticate" — the Claude CLI's own login expired
156
+
157
+ ### Symptoms
158
+
159
+ - `[Error] Failed to authenticate: OAuth session expired and could not be refreshed`
160
+ - `[Error] Failed to authenticate. API Error: 401 …` / `Invalid API key`
161
+ - Older versions: that text shown as a normal reply, then a separate `[Error] claude exited with code 1`
162
+ - Every turn fails the same way until the user acts — failures come in bursts, not at random
163
+
164
+ ### Cause
165
+
166
+ The `claude` CLI that MulmoClaude spawns could not authenticate with Anthropic, so it
167
+ exited before running anything. This is the CLI's own login (`claude login`, stored in
168
+ `~/.claude` / the macOS Keychain), not a MulmoClaude or Google account link. An OAuth
169
+ (subscription) session goes stale when its silent refresh fails; nothing on the
170
+ MulmoClaude side can refresh it.
171
+
172
+ ### Fix
173
+
174
+ The user runs `claude /login` (or `claude login`) in a terminal **on the host**, then
175
+ resends the message. If they authenticate with `ANTHROPIC_API_KEY` instead, check that
176
+ key. Switching auth mode is not the fix — a fresh `/login` is.
177
+
178
+ If `/login` succeeds and the error persists (typically `401 OAuth access token is
179
+ invalid`), what to check depends on the sandbox:
180
+
181
+ - **Sandbox off** — the spawned CLI inherits the server's environment, so a
182
+ `CLAUDE_CODE_OAUTH_TOKEN` set where MulmoClaude was started (shell profile or `.env`)
183
+ overrides the stored login. The user unsets or replaces it and **restarts
184
+ MulmoClaude**; a new terminal does not change the running server.
185
+ - **Sandbox on** — the container gets only the variables MulmoClaude passes explicitly,
186
+ and that token is not one of them; it authenticates from the host's mounted
187
+ `~/.claude`. Do not chase the environment variable here — the host login is the one
188
+ that counts.
189
+
190
+ You will usually be reading this AFTER the user re-logged in (a failing turn never
191
+ reaches you); answer "why did that happen" with the cause above rather than
192
+ investigating MulmoClaude's settings.
193
+
155
194
  ## gh / git / SSH errors inside the sandbox
156
195
 
157
196
  ### Symptoms
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mulmoclaude/core",
3
- "version": "5.5.0",
3
+ "version": "5.5.1",
4
4
  "description": "Shared server-side core for MulmoClaude and MulmoTerminal \u2014 the always-shipped-together subsystems consolidated behind subpath exports so the two hosts can't drift. Server-only except the browser-safe ./artifacts, ./whisper/client, ./workspace-setup/slug, ./translation/client, ./remote-view, ./remote-host and ./plugin-vue entries. All host specifics are injected.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -226,7 +226,7 @@
226
226
  "dependencies": {
227
227
  "@duckdb/node-api": "^1.5.5-r.5",
228
228
  "@mulmoclaude/common": "^1.3.0",
229
- "@mulmoclaude/markdown-utils": "^3.0.0",
229
+ "@mulmoclaude/markdown-utils": "^3.0.1",
230
230
  "dompurify": "^3.4.15",
231
231
  "fast-xml-parser": "^5.11.1",
232
232
  "google-auth-library": "^11.1.0",