opencode-claude-auth 1.1.1 → 1.2.0

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.
package/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # opencode-claude-auth
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/opencode-claude-auth)](https://www.npmjs.com/package/opencode-claude-auth)
4
+ [![Homebrew](https://img.shields.io/badge/homebrew-available-blue?logo=homebrew)](https://github.com/griffinmartin/opencode-claude-auth#install-with-homebrew-macos)
4
5
  [![CI](https://github.com/griffinmartin/opencode-claude-auth/actions/workflows/ci.yml/badge.svg)](https://github.com/griffinmartin/opencode-claude-auth/actions/workflows/ci.yml)
5
6
  [![Socket Badge](https://socket.dev/api/badge/npm/package/opencode-claude-auth)](https://socket.dev/npm/package/opencode-claude-auth)
6
7
 
@@ -8,7 +9,7 @@ Self-contained Anthropic auth provider for OpenCode using your Claude Code crede
8
9
 
9
10
  ## How it works
10
11
 
11
- The plugin registers its own auth provider with a custom fetch handler that intercepts all Anthropic API requests. It reads OAuth tokens from the macOS Keychain (or `~/.claude/.credentials.json` on other platforms), caches them in memory with a 30-second TTL, and handles the full request lifecycle — no builtin Anthropic auth plugin required.
12
+ The plugin registers its own auth provider with a custom fetch handler that intercepts all Anthropic API requests. It reads OAuth tokens from the macOS Keychain (or `~/.claude/.credentials.json` on other platforms), caches them in memory with a 30-second TTL, and handles the full request lifecycle — no builtin Anthropic auth plugin required. On macOS, multiple Claude Code accounts are detected automatically and can be switched via `opencode auth login`.
12
13
 
13
14
  It also syncs credentials to OpenCode's `auth.json` as a fallback (on Windows, it writes to both `%USERPROFILE%\.local\share\opencode\auth.json` and `%LOCALAPPDATA%\opencode\auth.json` to cover all installation methods). If a token is near expiry, it runs the Claude CLI to trigger a refresh. Background re-sync runs every 5 minutes.
14
15
 
@@ -88,9 +89,23 @@ Just run OpenCode. The plugin handles auth automatically — it reads your Claud
88
89
 
89
90
  The plugin checks these in order:
90
91
 
91
- 1. macOS Keychain ("Claude Code-credentials" entry)
92
+ 1. macOS Keychain (all `Claude Code-credentials*` entries — multiple accounts are detected automatically)
92
93
  2. `~/.claude/.credentials.json` (fallback, works on all platforms)
93
94
 
95
+ ## Multiple accounts (macOS)
96
+
97
+ If you have [multiple Claude Code accounts](https://gist.github.com/KMJ-007/0979814968722051620461ab2aa01bf2) authenticated on macOS, the plugin detects all of them from the Keychain automatically. Each account is labeled by its subscription tier (Claude Pro, Claude Max, etc.).
98
+
99
+ To switch accounts:
100
+
101
+ ```bash
102
+ opencode auth login
103
+ ```
104
+
105
+ Select "Switch Claude Code account" and pick the account you want to use. Your selection is persisted across sessions.
106
+
107
+ If only one account is found, the switcher is hidden and the plugin uses it directly.
108
+
94
109
  ## Troubleshooting
95
110
 
96
111
  | Problem | Solution |
@@ -144,6 +159,8 @@ export ANTHROPIC_ENABLE_1M_CONTEXT=true # requires Claude Max
144
159
  - Buffers SSE response streams at event boundaries for reliable tool name translation
145
160
  - Injects Claude Code identity into system prompts via `experimental.chat.system.transform`
146
161
  - Sets required API headers (beta flags, billing, user-agent) with model-aware selection
162
+ - On macOS, enumerates all `Claude Code-credentials*` Keychain entries and labels them by subscription tier
163
+ - Provides an account switcher via `opencode auth login` when multiple accounts are found; persists selection to `~/.local/share/opencode/claude-account-source.txt`
147
164
  - Syncs credentials to `auth.json` on startup and every 5 minutes as a fallback
148
165
  - On Windows, writes to both `%USERPROFILE%\.local\share\opencode\auth.json` and `%LOCALAPPDATA%\opencode\auth.json`
149
166
  - Retries API requests on 429 (rate limit) and 529 (overloaded) with exponential backoff, respecting `retry-after` headers
package/dist/betas.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export declare const LONG_CONTEXT_BETAS: string[];
2
2
  export declare function getExcludedBetas(modelId: string): Set<string>;
3
3
  export declare function addExcludedBeta(modelId: string, beta: string): void;
4
+ export declare function resetExcludedBetas(): void;
4
5
  export declare function isLongContextError(responseBody: string): boolean;
5
6
  export declare function getNextBetaToExclude(modelId: string): string | null;
6
7
  export declare function supports1mContext(modelId: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"betas.d.ts","sourceRoot":"","sources":["../src/betas.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,UAG9B,CAAA;AAgBD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAe7D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAInE;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAMhE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQnE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAU1D;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACrB,MAAM,EAAE,CA+BV"}
1
+ {"version":3,"file":"betas.d.ts","sourceRoot":"","sources":["../src/betas.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,UAG9B,CAAA;AAgBD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAe7D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAInE;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAMhE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQnE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAU1D;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACrB,MAAM,EAAE,CA+BV"}
package/dist/betas.js CHANGED
@@ -34,6 +34,10 @@ export function addExcludedBeta(modelId, beta) {
34
34
  existing.add(beta);
35
35
  excludedBetas.set(modelId, existing);
36
36
  }
37
+ export function resetExcludedBetas() {
38
+ excludedBetas.clear();
39
+ lastModelId = undefined;
40
+ }
37
41
  export function isLongContextError(responseBody) {
38
42
  return (responseBody.includes("Extra usage is required for long context requests") || responseBody.includes("long context beta is not yet available"));
39
43
  }
package/dist/betas.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"betas.js","sourceRoot":"","sources":["../src/betas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"betas.js","sourceRoot":"","sources":["../src/betas.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
- import { type ClaudeCredentials } from "./keychain.js";
1
+ import { type ClaudeCredentials, type ClaudeAccount } from "./keychain.js";
2
+ export type { ClaudeCredentials } from "./keychain.js";
3
+ export type { ClaudeAccount } from "./keychain.js";
4
+ export declare function initAccounts(accounts: ClaudeAccount[]): void;
5
+ export declare function getAccounts(): ClaudeAccount[];
6
+ export declare function setActiveAccountSource(source: string): void;
7
+ export declare function refreshAccountsList(): ClaudeAccount[];
8
+ export declare function loadPersistedAccountSource(): string | null;
9
+ export declare function saveAccountSource(source: string): void;
2
10
  export declare function syncAuthJson(creds: ClaudeCredentials): void;
3
- export declare function refreshIfNeeded(): ClaudeCredentials | null;
11
+ export declare function refreshIfNeeded(account?: ClaudeAccount): ClaudeCredentials | null;
4
12
  export declare function getCachedCredentials(): ClaudeCredentials | null;
5
- export type { ClaudeCredentials } from "./keychain.js";
6
13
  //# sourceMappingURL=credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,iBAAiB,EAAyB,MAAM,eAAe,CAAA;AAiD7E,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAI3D;AAmBD,wBAAgB,eAAe,IAAI,iBAAiB,GAAG,IAAI,CAW1D;AAMD,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAoB/D;AAED,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAA;AAGtB,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAWlD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAE5D;AAED,wBAAgB,WAAW,IAAI,aAAa,EAAE,CAE7C;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAI3D;AAED,wBAAgB,mBAAmB,IAAI,aAAa,EAAE,CAGrD;AAqBD,wBAAgB,0BAA0B,IAAI,MAAM,GAAG,IAAI,CAU1D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAStD;AA4CD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAI3D;AAmBD,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,aAAa,GACtB,iBAAiB,GAAG,IAAI,CAW1B;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAsB/D"}
@@ -2,10 +2,64 @@ import { execSync } from "node:child_process";
2
2
  import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync, } from "node:fs";
3
3
  import { homedir } from "node:os";
4
4
  import { dirname, join } from "node:path";
5
- import { readClaudeCredentials } from "./keychain.js";
5
+ import { readAllClaudeAccounts, refreshAccount, } from "./keychain.js";
6
+ import { resetExcludedBetas } from "./betas.js";
6
7
  const CREDENTIAL_CACHE_TTL_MS = 30_000;
7
- let cachedCredentials = null;
8
- let cachedCredentialsAt = 0;
8
+ const accountCacheMap = new Map();
9
+ let activeAccountSource = null;
10
+ let allAccounts = [];
11
+ export function initAccounts(accounts) {
12
+ allAccounts = accounts;
13
+ }
14
+ export function getAccounts() {
15
+ return allAccounts;
16
+ }
17
+ export function setActiveAccountSource(source) {
18
+ activeAccountSource = source;
19
+ accountCacheMap.delete(source);
20
+ resetExcludedBetas();
21
+ }
22
+ export function refreshAccountsList() {
23
+ allAccounts = readAllClaudeAccounts();
24
+ return allAccounts;
25
+ }
26
+ function getActiveAccount() {
27
+ if (allAccounts.length === 0)
28
+ return null;
29
+ if (activeAccountSource) {
30
+ const found = allAccounts.find((a) => a.source === activeAccountSource);
31
+ if (found)
32
+ return found;
33
+ }
34
+ return allAccounts[0];
35
+ }
36
+ function getAccountStateFile() {
37
+ return join(homedir(), ".local", "share", "opencode", "claude-account-source.txt");
38
+ }
39
+ export function loadPersistedAccountSource() {
40
+ try {
41
+ const path = getAccountStateFile();
42
+ if (existsSync(path)) {
43
+ return readFileSync(path, "utf-8").trim() || null;
44
+ }
45
+ }
46
+ catch {
47
+ // ignore
48
+ }
49
+ return null;
50
+ }
51
+ export function saveAccountSource(source) {
52
+ try {
53
+ const path = getAccountStateFile();
54
+ const dir = dirname(path);
55
+ if (!existsSync(dir))
56
+ mkdirSync(dir, { recursive: true });
57
+ writeFileSync(path, source, "utf-8");
58
+ }
59
+ catch {
60
+ // Non-fatal
61
+ }
62
+ }
9
63
  function getAuthJsonPaths() {
10
64
  const xdgPath = join(homedir(), ".local", "share", "opencode", "auth.json");
11
65
  if (process.platform === "win32") {
@@ -68,36 +122,36 @@ function refreshViaCli() {
68
122
  }
69
123
  }
70
124
  }
71
- export function refreshIfNeeded() {
72
- let creds = readClaudeCredentials();
73
- if (creds && creds.expiresAt > Date.now() + 60_000) {
125
+ export function refreshIfNeeded(account) {
126
+ const target = account ?? getActiveAccount();
127
+ if (!target)
128
+ return null;
129
+ const creds = target.credentials;
130
+ if (creds.expiresAt > Date.now() + 60_000)
74
131
  return creds;
75
- }
76
132
  refreshViaCli();
77
- creds = readClaudeCredentials();
78
- if (creds && creds.expiresAt > Date.now() + 60_000) {
79
- return creds;
80
- }
133
+ const refreshed = refreshAccount(target.source);
134
+ if (refreshed && refreshed.expiresAt > Date.now() + 60_000)
135
+ return refreshed;
81
136
  return null;
82
137
  }
83
- function isCredentialUsable(creds) {
84
- return creds.expiresAt > Date.now() + 60_000;
85
- }
86
138
  export function getCachedCredentials() {
139
+ const account = getActiveAccount();
140
+ if (!account)
141
+ return null;
87
142
  const now = Date.now();
88
- if (cachedCredentials &&
89
- now - cachedCredentialsAt < CREDENTIAL_CACHE_TTL_MS &&
90
- isCredentialUsable(cachedCredentials)) {
91
- return cachedCredentials;
143
+ const cached = accountCacheMap.get(account.source);
144
+ if (cached &&
145
+ now - cached.cachedAt < CREDENTIAL_CACHE_TTL_MS &&
146
+ cached.creds.expiresAt > now + 60_000) {
147
+ return cached.creds;
92
148
  }
93
- const latest = refreshIfNeeded();
94
- if (!latest) {
95
- cachedCredentials = null;
96
- cachedCredentialsAt = 0;
149
+ const fresh = refreshIfNeeded(account);
150
+ if (!fresh) {
151
+ accountCacheMap.delete(account.source);
97
152
  return null;
98
153
  }
99
- cachedCredentials = latest;
100
- cachedCredentialsAt = now;
101
- return latest;
154
+ accountCacheMap.set(account.source, { creds: fresh, cachedAt: now });
155
+ return fresh;
102
156
  }
103
157
  //# sourceMappingURL=credentials.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EACL,qBAAqB,EACrB,cAAc,GAGf,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAK/C,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAEtC,MAAM,eAAe,GAAG,IAAI,GAAG,EAG5B,CAAA;AACH,IAAI,mBAAmB,GAAkB,IAAI,CAAA;AAC7C,IAAI,WAAW,GAAoB,EAAE,CAAA;AAErC,MAAM,UAAU,YAAY,CAAC,QAAyB;IACpD,WAAW,GAAG,QAAQ,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,mBAAmB,GAAG,MAAM,CAAA;IAC5B,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9B,kBAAkB,EAAE,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,WAAW,GAAG,qBAAqB,EAAE,CAAA;IACrC,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACzC,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,mBAAmB,CAAC,CAAA;QACvE,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;IACzB,CAAC;IACD,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;AACvB,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO,IAAI,CACT,OAAO,EAAE,EACT,QAAQ,EACR,OAAO,EACP,UAAU,EACV,2BAA2B,CAC5B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAA;QAClC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAA;QACnD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAA;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IAC3E,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QACjE,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAC/D,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,CAAA;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB,EAAE,KAAwB;IAC5D,IAAI,IAAI,GAA4B,EAAE,CAAA;IACtC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;QAClD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,8BAA8B;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,SAAS,GAAG;QACf,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,KAAK,CAAC,WAAW;QACzB,OAAO,EAAE,KAAK,CAAC,YAAY;QAC3B,OAAO,EAAE,KAAK,CAAC,SAAS;KACzB,CAAA;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAClD,CAAC;IACD,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QACrD,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAA;IACF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,EAAE,CAAC;QAC1C,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,WAAW,GAAG,CAAC,CAAA;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,QAAQ,CAAC,2BAA2B,EAAE;gBACpC,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE,OAAO;gBACjB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;gBACrC,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAAuB;IAEvB,MAAM,MAAM,GAAG,OAAO,IAAI,gBAAgB,EAAE,CAAA;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAA;IAChC,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM;QAAE,OAAO,KAAK,CAAA;IAEvD,aAAa,EAAE,CAAA;IACf,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC/C,IAAI,SAAS,IAAI,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM;QAAE,OAAO,SAAS,CAAA;IAC5E,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAA;IAClC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAClD,IACE,MAAM;QACN,GAAG,GAAG,MAAM,CAAC,QAAQ,GAAG,uBAAuB;QAC/C,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,GAAG,MAAM,EACrC,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAA;IACrB,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACtC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAA;IACpE,OAAO,KAAK,CAAA;AACd,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import type { Plugin } from "@opencode-ai/plugin";
2
2
  export { addExcludedBeta, getExcludedBetas, getModelBetas, getNextBetaToExclude, isLongContextError, LONG_CONTEXT_BETAS, } from "./betas.js";
3
- export { type ClaudeCredentials, getCachedCredentials, refreshIfNeeded, syncAuthJson, } from "./credentials.js";
3
+ export { resetExcludedBetas } from "./betas.js";
4
4
  export { stripToolPrefix, transformBody, transformResponseStream, } from "./transforms.js";
5
+ export { getCachedCredentials, syncAuthJson, refreshAccountsList, type ClaudeCredentials, } from "./credentials.js";
5
6
  type FetchFn = typeof fetch;
6
7
  export declare function fetchWithRetry(input: RequestInfo | URL, init?: RequestInit, retries?: number, fetchImpl?: FetchFn): Promise<Response>;
7
8
  export declare function buildRequestHeaders(input: RequestInfo | URL, init: RequestInit, accessToken: string, modelId?: string, excludedBetas?: Set<string>): Headers;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAkBjD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,KAAK,iBAAiB,EACtB,oBAAoB,EACpB,eAAe,EACf,YAAY,GACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,eAAe,EACf,aAAa,EACb,uBAAuB,GACxB,MAAM,iBAAiB,CAAA;AAiBxB,KAAK,OAAO,GAAG,OAAO,KAAK,CAAA;AAE3B,wBAAsB,cAAc,CAClC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,EAClB,OAAO,SAAI,EACX,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,QAAQ,CAAC,CAanB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,SAAY,EACnB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC1B,OAAO,CA+CT;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAID,QAAA,MAAM,MAAM,EAAE,MAqKb,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAS,CAAA;AACtC,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAsBjD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EACL,eAAe,EACf,aAAa,EACb,uBAAuB,GACxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,EACnB,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAA;AAiBzB,KAAK,OAAO,GAAG,OAAO,KAAK,CAAA;AAE3B,wBAAsB,cAAc,CAClC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,EAClB,OAAO,SAAI,EACX,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,QAAQ,CAAC,CAanB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,SAAY,EACnB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC1B,OAAO,CA+CT;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAID,QAAA,MAAM,MAAM,EAAE,MAwOb,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAS,CAAA;AACtC,eAAe,MAAM,CAAA"}
package/dist/index.js CHANGED
@@ -1,10 +1,11 @@
1
+ import { readAllClaudeAccounts } from "./keychain.js";
1
2
  import { addExcludedBeta, getExcludedBetas, getModelBetas, getNextBetaToExclude, isLongContextError, LONG_CONTEXT_BETAS, } from "./betas.js";
2
- import { getCachedCredentials, refreshIfNeeded, syncAuthJson, } from "./credentials.js";
3
- import { readClaudeCredentials } from "./keychain.js";
4
3
  import { transformBody, transformResponseStream } from "./transforms.js";
4
+ import { getCachedCredentials, syncAuthJson, initAccounts, setActiveAccountSource, loadPersistedAccountSource, saveAccountSource, refreshAccountsList, } from "./credentials.js";
5
5
  export { addExcludedBeta, getExcludedBetas, getModelBetas, getNextBetaToExclude, isLongContextError, LONG_CONTEXT_BETAS, } from "./betas.js";
6
- export { getCachedCredentials, refreshIfNeeded, syncAuthJson, } from "./credentials.js";
6
+ export { resetExcludedBetas } from "./betas.js";
7
7
  export { stripToolPrefix, transformBody, transformResponseStream, } from "./transforms.js";
8
+ export { getCachedCredentials, syncAuthJson, refreshAccountsList, } from "./credentials.js";
8
9
  const SYSTEM_IDENTITY_PREFIX = "You are Claude Code, Anthropic's official CLI for Claude.";
9
10
  const DEFAULT_CC_VERSION = "2.1.80";
10
11
  function getCliVersion() {
@@ -79,22 +80,27 @@ export function getBillingHeader(modelId) {
79
80
  }
80
81
  const SYNC_INTERVAL = 5 * 60 * 1000; // 5 minutes
81
82
  const plugin = async () => {
82
- let creds = null;
83
+ let accounts = [];
83
84
  try {
84
- creds = readClaudeCredentials();
85
+ accounts = readAllClaudeAccounts();
85
86
  }
86
87
  catch (err) {
87
88
  console.warn("opencode-claude-auth: Failed to read Claude Code credentials:", err instanceof Error ? err.message : err);
88
89
  return {};
89
90
  }
90
- if (!creds) {
91
+ if (accounts.length === 0) {
91
92
  console.warn("opencode-claude-auth: No Claude Code credentials found. " +
92
93
  "Plugin disabled. Run `claude` to authenticate.");
93
94
  return {};
94
95
  }
95
- const freshCreds = getCachedCredentials();
96
- if (freshCreds) {
97
- syncAuthJson(freshCreds);
96
+ initAccounts(accounts);
97
+ const persistedSource = loadPersistedAccountSource();
98
+ const defaultAccount = (persistedSource && accounts.find((a) => a.source === persistedSource)) ||
99
+ accounts[0];
100
+ setActiveAccountSource(defaultAccount.source);
101
+ const initialCreds = getCachedCredentials();
102
+ if (initialCreds) {
103
+ syncAuthJson(initialCreds);
98
104
  }
99
105
  else {
100
106
  console.warn("opencode-claude-auth: Claude credentials are expired and could not be refreshed via Claude CLI.");
@@ -102,10 +108,9 @@ const plugin = async () => {
102
108
  // Keep auth.json synced, refreshing via CLI if token is near expiry
103
109
  const syncTimer = setInterval(() => {
104
110
  try {
105
- const fresh = refreshIfNeeded();
106
- if (fresh) {
111
+ const fresh = getCachedCredentials();
112
+ if (fresh)
107
113
  syncAuthJson(fresh);
108
- }
109
114
  }
110
115
  catch {
111
116
  // Non-fatal
@@ -195,9 +200,57 @@ const plugin = async () => {
195
200
  },
196
201
  methods: [
197
202
  {
198
- provider: "anthropic",
199
- label: "Manually enter API Key",
200
- type: "api",
203
+ type: "oauth",
204
+ label: "Switch Claude Code account",
205
+ get prompts() {
206
+ const currentAccounts = refreshAccountsList();
207
+ const currentSource = loadPersistedAccountSource() ?? defaultAccount.source;
208
+ if (currentAccounts.length <= 1)
209
+ return [];
210
+ return [
211
+ {
212
+ type: "select",
213
+ key: "account",
214
+ message: "Select which Claude Code account to use:",
215
+ options: currentAccounts.map((a) => ({
216
+ label: a.label,
217
+ value: a.source,
218
+ hint: a.source === currentSource
219
+ ? `${a.source} (active)`
220
+ : a.source,
221
+ })),
222
+ },
223
+ ];
224
+ },
225
+ async authorize(inputs) {
226
+ const latestAccounts = refreshAccountsList();
227
+ const source = inputs?.account ?? latestAccounts[0]?.source ?? accounts[0].source;
228
+ const chosen = latestAccounts.find((a) => a.source === source) ??
229
+ accounts.find((a) => a.source === source) ??
230
+ latestAccounts[0] ??
231
+ accounts[0];
232
+ setActiveAccountSource(chosen.source);
233
+ const creds = getCachedCredentials() ?? chosen.credentials;
234
+ syncAuthJson(creds);
235
+ saveAccountSource(chosen.source);
236
+ const sourceDescription = chosen.source === "file"
237
+ ? "credentials file (~/.claude/.credentials.json)"
238
+ : "macOS Keychain";
239
+ return {
240
+ url: "",
241
+ instructions: `Using ${chosen.label} — credentials loaded from ${sourceDescription}.`,
242
+ method: "auto",
243
+ async callback() {
244
+ return {
245
+ type: "success",
246
+ provider: "anthropic",
247
+ access: creds.accessToken,
248
+ refresh: creds.refreshToken,
249
+ expires: creds.expiresAt,
250
+ };
251
+ },
252
+ };
253
+ },
201
254
  },
202
255
  ],
203
256
  },
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,16 @@ export interface ClaudeCredentials {
2
2
  accessToken: string;
3
3
  refreshToken: string;
4
4
  expiresAt: number;
5
+ subscriptionType?: string;
5
6
  }
7
+ export interface ClaudeAccount {
8
+ label: string;
9
+ source: string;
10
+ credentials: ClaudeCredentials;
11
+ }
12
+ export declare function buildAccountLabels(credsList: ClaudeCredentials[]): string[];
13
+ export declare function readAllClaudeAccounts(): ClaudeAccount[];
14
+ export declare function refreshAccount(source: string): ClaudeCredentials | null;
15
+ /** @deprecated Use readAllClaudeAccounts() instead */
6
16
  export declare function readClaudeCredentials(): ClaudeCredentials | null;
7
17
  //# sourceMappingURL=keychain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAoCD,wBAAgB,qBAAqB,IAAI,iBAAiB,GAAG,IAAI,CAkFhE"}
1
+ {"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,iBAAiB,CAAA;CAC/B;AA4HD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAoB3E;AAED,wBAAgB,qBAAqB,IAAI,aAAa,EAAE,CA+BvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAOvE;AAED,sDAAsD;AACtD,wBAAgB,qBAAqB,IAAI,iBAAiB,GAAG,IAAI,CAGhE"}
package/dist/keychain.js CHANGED
@@ -2,36 +2,38 @@ import { execSync } from "node:child_process";
2
2
  import { readFileSync } from "node:fs";
3
3
  import { homedir } from "node:os";
4
4
  import { join } from "node:path";
5
- const SERVICE_NAME = "Claude Code-credentials";
6
- function readCredentialsFile() {
5
+ const PRIMARY_SERVICE = "Claude Code-credentials";
6
+ function parseCredentials(raw) {
7
+ let parsed;
7
8
  try {
8
- const credPath = join(homedir(), ".claude", ".credentials.json");
9
- const raw = readFileSync(credPath, "utf-8");
10
- const parsed = JSON.parse(raw);
11
- const data = parsed.claudeAiOauth ?? parsed;
12
- const creds = data;
13
- if (typeof creds.accessToken !== "string" ||
14
- typeof creds.refreshToken !== "string" ||
15
- typeof creds.expiresAt !== "number") {
16
- return null;
17
- }
18
- return {
19
- accessToken: creds.accessToken,
20
- refreshToken: creds.refreshToken,
21
- expiresAt: creds.expiresAt,
22
- };
9
+ parsed = JSON.parse(raw);
23
10
  }
24
11
  catch {
25
12
  return null;
26
13
  }
27
- }
28
- export function readClaudeCredentials() {
29
- if (process.platform !== "darwin") {
30
- return readCredentialsFile();
14
+ const data = parsed.claudeAiOauth ?? parsed;
15
+ const creds = data;
16
+ // Entries that only contain mcpOAuth are MCP server credentials, not user accounts
17
+ if (parsed.mcpOAuth && !creds.accessToken) {
18
+ return null;
19
+ }
20
+ if (typeof creds.accessToken !== "string" ||
21
+ typeof creds.refreshToken !== "string" ||
22
+ typeof creds.expiresAt !== "number") {
23
+ return null;
31
24
  }
32
- let raw;
25
+ return {
26
+ accessToken: creds.accessToken,
27
+ refreshToken: creds.refreshToken,
28
+ expiresAt: creds.expiresAt,
29
+ subscriptionType: typeof creds.subscriptionType === "string"
30
+ ? creds.subscriptionType
31
+ : undefined,
32
+ };
33
+ }
34
+ function readKeychainService(serviceName) {
33
35
  try {
34
- raw = execSync(`security find-generic-password -s "${SERVICE_NAME}" -w`, {
36
+ return execSync(`security find-generic-password -s "${serviceName}" -w`, {
35
37
  timeout: 2000,
36
38
  encoding: "utf-8",
37
39
  }).trim();
@@ -41,39 +43,122 @@ export function readClaudeCredentials() {
41
43
  if (error.killed || error.code === "ETIMEDOUT") {
42
44
  throw new Error("Keychain read timed out. This can happen on macOS Tahoe. Try restarting Keychain Access.", { cause: err });
43
45
  }
44
- if (error.status === 44) {
45
- return readCredentialsFile();
46
- }
47
46
  if (error.status === 36) {
48
47
  throw new Error("macOS Keychain is locked. Please unlock it or run: security unlock-keychain ~/Library/Keychains/login.keychain-db", { cause: err });
49
48
  }
50
49
  if (error.status === 128) {
51
50
  throw new Error("Keychain access was denied. Please grant access when prompted by macOS.", { cause: err });
52
51
  }
53
- throw new Error(`Failed to read Claude Code credentials from Keychain (exit ${error.status ?? "unknown"}). Try re-authenticating with Claude Code.`, { cause: err });
52
+ if (error.status === 44) {
53
+ return null; // item not found
54
+ }
55
+ throw new Error(`Failed to read Keychain entry "${serviceName}" (exit ${error.status ?? "unknown"}). Try re-authenticating with Claude Code.`, { cause: err });
54
56
  }
55
- let parsed;
57
+ }
58
+ function listClaudeKeychainServices() {
56
59
  try {
57
- parsed = JSON.parse(raw);
60
+ const dump = execSync("security dump-keychain", {
61
+ timeout: 5000,
62
+ encoding: "utf-8",
63
+ });
64
+ const services = [];
65
+ const seen = new Set();
66
+ const re = /"Claude Code-credentials(?:-[0-9a-f]+)?"/g;
67
+ let m = re.exec(dump);
68
+ while (m !== null) {
69
+ const svc = m[0].slice(1, -1);
70
+ if (!seen.has(svc)) {
71
+ seen.add(svc);
72
+ services.push(svc);
73
+ }
74
+ m = re.exec(dump);
75
+ }
76
+ const ordered = [];
77
+ if (seen.has(PRIMARY_SERVICE))
78
+ ordered.push(PRIMARY_SERVICE);
79
+ for (const svc of services) {
80
+ if (svc !== PRIMARY_SERVICE)
81
+ ordered.push(svc);
82
+ }
83
+ return ordered;
58
84
  }
59
85
  catch {
60
- throw new Error("Claude Code credentials exist but contain invalid JSON. Try re-authenticating with Claude Code.");
86
+ return [PRIMARY_SERVICE];
61
87
  }
62
- const data = parsed.claudeAiOauth ?? parsed;
63
- const creds = data;
64
- if (typeof creds.accessToken !== "string") {
65
- throw new Error("Claude Code credentials are incomplete (missing accessToken). Try re-authenticating with Claude Code.");
88
+ }
89
+ function readCredentialsFile() {
90
+ try {
91
+ const credPath = join(homedir(), ".claude", ".credentials.json");
92
+ const raw = readFileSync(credPath, "utf-8");
93
+ return parseCredentials(raw);
94
+ }
95
+ catch {
96
+ return null;
97
+ }
98
+ }
99
+ export function buildAccountLabels(credsList) {
100
+ const baseLabels = credsList.map((c) => {
101
+ if (c.subscriptionType) {
102
+ const tier = c.subscriptionType.charAt(0).toUpperCase() + c.subscriptionType.slice(1);
103
+ return `Claude ${tier}`;
104
+ }
105
+ return "Claude";
106
+ });
107
+ const counts = new Map();
108
+ for (const l of baseLabels)
109
+ counts.set(l, (counts.get(l) ?? 0) + 1);
110
+ const seen = new Map();
111
+ return baseLabels.map((base) => {
112
+ if ((counts.get(base) ?? 0) <= 1)
113
+ return base;
114
+ const n = (seen.get(base) ?? 0) + 1;
115
+ seen.set(base, n);
116
+ return `${base} ${n}`;
117
+ });
118
+ }
119
+ export function readAllClaudeAccounts() {
120
+ if (process.platform !== "darwin") {
121
+ const creds = readCredentialsFile();
122
+ if (!creds)
123
+ return [];
124
+ const [label] = buildAccountLabels([creds]);
125
+ return [{ label, source: "file", credentials: creds }];
66
126
  }
67
- if (typeof creds.refreshToken !== "string") {
68
- throw new Error("Claude Code credentials are incomplete (missing refreshToken). Try re-authenticating with Claude Code.");
127
+ const services = listClaudeKeychainServices();
128
+ const rawAccounts = [];
129
+ for (const svc of services) {
130
+ const raw = readKeychainService(svc);
131
+ if (!raw)
132
+ continue;
133
+ const creds = parseCredentials(raw);
134
+ if (!creds)
135
+ continue;
136
+ rawAccounts.push({ source: svc, credentials: creds });
69
137
  }
70
- if (typeof creds.expiresAt !== "number") {
71
- throw new Error("Claude Code credentials are incomplete (missing expiresAt). Try re-authenticating with Claude Code.");
138
+ if (rawAccounts.length === 0) {
139
+ const creds = readCredentialsFile();
140
+ if (creds)
141
+ rawAccounts.push({ source: "file", credentials: creds });
72
142
  }
73
- return {
74
- accessToken: creds.accessToken,
75
- refreshToken: creds.refreshToken,
76
- expiresAt: creds.expiresAt,
77
- };
143
+ const labels = buildAccountLabels(rawAccounts.map((a) => a.credentials));
144
+ return rawAccounts.map((a, i) => ({
145
+ label: labels[i],
146
+ source: a.source,
147
+ credentials: a.credentials,
148
+ }));
149
+ }
150
+ export function refreshAccount(source) {
151
+ if (source === "file") {
152
+ return readCredentialsFile();
153
+ }
154
+ const raw = readKeychainService(source);
155
+ if (!raw)
156
+ return null;
157
+ return parseCredentials(raw);
158
+ }
159
+ /** @deprecated Use readAllClaudeAccounts() instead */
160
+ export function readClaudeCredentials() {
161
+ const accounts = readAllClaudeAccounts();
162
+ return accounts.length > 0 ? accounts[0].credentials : null;
78
163
  }
79
164
  //# sourceMappingURL=keychain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keychain.js","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keychain.js","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAehC,MAAM,eAAe,GAAG,yBAAyB,CAAA;AAEjD,SAAS,gBAAgB,CAAC,GAAW;IACnC,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,IAAI,GAAI,MAAsC,CAAC,aAAa,IAAI,MAAM,CAAA;IAC5E,MAAM,KAAK,GAAG,IAMb,CAAA;IAED,mFAAmF;IACnF,IAAK,MAAiC,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACtE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IACE,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACtC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,EACnC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,gBAAgB,EACd,OAAO,KAAK,CAAC,gBAAgB,KAAK,QAAQ;YACxC,CAAC,CAAC,KAAK,CAAC,gBAAgB;YACxB,CAAC,CAAC,SAAS;KAChB,CAAA;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAmB;IAC9C,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,sCAAsC,WAAW,MAAM,EAAE;YACvE,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,IAAI,EAAE,CAAA;IACX,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,GAA2D,CAAA;QAEzE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACb,0FAA0F,EAC1F,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;QACH,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,mHAAmH,EACnH,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;QACH,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,yEAAyE,EACzE,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;QACH,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACxB,OAAO,IAAI,CAAA,CAAC,iBAAiB;QAC/B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,kCAAkC,WAAW,WAAW,KAAK,CAAC,MAAM,IAAI,SAAS,4CAA4C,EAC7H,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;IACH,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B;IACjC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,wBAAwB,EAAE;YAC9C,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;QAE9B,MAAM,EAAE,GAAG,2CAA2C,CAAA;QACtD,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACb,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACpB,CAAC;YACD,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;QAED,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC5D,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,KAAK,eAAe;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAA;QAChE,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC3C,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAA8B;IAC/D,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACvB,MAAM,IAAI,GACR,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC1E,OAAO,UAAU,IAAI,EAAE,CAAA;QACzB,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxC,KAAK,MAAM,CAAC,IAAI,UAAU;QAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAEnE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAA;IACtC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAC7C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACjB,OAAO,GAAG,IAAI,IAAI,CAAC,EAAE,CAAA;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAA;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAA;QACrB,MAAM,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3C,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,QAAQ,GAAG,0BAA0B,EAAE,CAAA;IAC7C,MAAM,WAAW,GACf,EAAE,CAAA;IAEJ,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,CAAC,GAAG;YAAE,SAAQ;QAClB,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK;YAAE,SAAQ;QACpB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAA;QACnC,IAAI,KAAK;YAAE,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;IACrE,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;IACxE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,WAAW,EAAE,CAAC,CAAC,WAAW;KAC3B,CAAC,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,mBAAmB,EAAE,CAAA;IAC9B,CAAC;IACD,MAAM,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAA;AAC9B,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAA;IACxC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;AAC7D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-claude-auth",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "OpenCode plugin that uses your Claude Code credentials — no separate login needed.",
5
5
  "keywords": [
6
6
  "anthropic",