惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
量子位
S
SegmentFault 最新的问题
V
Visual Studio Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
Stack Overflow Blog
Stack Overflow Blog
Vercel News
Vercel News
D
Docker
J
Java Code Geeks
博客园 - 三生石上(FineUI控件)
博客园 - Franky
Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
D
DataBreaches.Net
Y
Y Combinator Blog
云风的 BLOG
云风的 BLOG
V
V2EX

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
Remove OAuth sidecar credential runtime support (#82777) ...
joshavant · 2026-05-17 · via Recent Commits to openclaw:main

@@ -28,7 +28,7 @@ const {

2828

formatProviderAuthProfileApiKeyWithPluginMock,

2929

} = getOAuthProviderRuntimeMocks();

303031-

function expectPersistedOpenAICodexProfileWithoutInlineTokens(

31+

function expectPersistedOpenAICodexProfile(

3232

credential: AuthProfileStore["profiles"][string],

3333

metadata: Record<string, unknown> = {},

3434

): void {

@@ -37,9 +37,6 @@ function expectPersistedOpenAICodexProfileWithoutInlineTokens(

3737

for (const [key, value] of Object.entries(metadata)) {

3838

expect((credential as Record<string, unknown> | undefined)?.[key]).toEqual(value);

3939

}

40-

expect(credential).not.toHaveProperty("access");

41-

expect(credential).not.toHaveProperty("refresh");

42-

expect(credential).not.toHaveProperty("idToken");

4340

}

44414542

function requireOAuthCredential(store: AuthProfileStore, profileId: string): OAuthCredential {

@@ -99,7 +96,7 @@ describe("resolveApiKeyForProfile OAuth refresh mirror-to-main (#26322)", () =>

9996

await removeOAuthTestTempRoot(tempRoot);

10097

});

10198102-

it("mirrors refreshed Codex OAuth metadata into the main store without inline tokens", async () => {

99+

it("mirrors refreshed Codex OAuth credentials into the main store", async () => {

103100

const profileId = "openai-codex:default";

104101

const provider = "openai-codex";

105102

const accountId = "acct-shared";

@@ -135,12 +132,12 @@ describe("resolveApiKeyForProfile OAuth refresh mirror-to-main (#26322)", () =>

135132

const mainRaw = JSON.parse(

136133

await fs.readFile(path.join(mainAgentDir, "auth-profiles.json"), "utf8"),

137134

) as AuthProfileStore;

138-

expectPersistedOpenAICodexProfileWithoutInlineTokens(mainRaw.profiles[profileId], {

135+

expectPersistedOpenAICodexProfile(mainRaw.profiles[profileId], {

136+

access: "sub-refreshed-access",

137+

refresh: "sub-refreshed-refresh",

139138

expires: freshExpiry,

140139

accountId,

141140

});

142-

expect(JSON.stringify(mainRaw)).not.toContain("sub-refreshed-access");

143-

expect(JSON.stringify(mainRaw)).not.toContain("sub-refreshed-refresh");

144141

});

145142146143

it("does not mirror when refresh was performed from the main agent itself", async () => {

@@ -177,11 +174,11 @@ describe("resolveApiKeyForProfile OAuth refresh mirror-to-main (#26322)", () =>

177174

const mainRaw = JSON.parse(

178175

await fs.readFile(path.join(mainAgentDir, "auth-profiles.json"), "utf8"),

179176

) as AuthProfileStore;

180-

expectPersistedOpenAICodexProfileWithoutInlineTokens(mainRaw.profiles[profileId], {

177+

expectPersistedOpenAICodexProfile(mainRaw.profiles[profileId], {

178+

access: "main-refreshed-access",

179+

refresh: "main-refreshed-refresh",

181180

expires: freshExpiry,

182181

});

183-

expect(JSON.stringify(mainRaw)).not.toContain("main-refreshed-access");

184-

expect(JSON.stringify(mainRaw)).not.toContain("main-refreshed-refresh");

185182

expect(refreshProviderOAuthCredentialWithPluginMock).toHaveBeenCalledTimes(1);

186183

});

187184

@@ -349,22 +346,22 @@ describe("resolveApiKeyForProfile OAuth refresh mirror-to-main (#26322)", () =>

349346

const subRaw = JSON.parse(

350347

await fs.readFile(path.join(subAgentDir, "auth-profiles.json"), "utf8"),

351348

) as AuthProfileStore;

352-

expectPersistedOpenAICodexProfileWithoutInlineTokens(subRaw.profiles[profileId], {

349+

expectPersistedOpenAICodexProfile(subRaw.profiles[profileId], {

350+

access: "local-stale-access",

351+

refresh: "local-stale-refresh",

353352

expires: now - 120_000,

354353

accountId,

355354

});

356-

expect(JSON.stringify(subRaw)).not.toContain("local-stale-access");

357-

expect(JSON.stringify(subRaw)).not.toContain("local-stale-refresh");

358355359356

const mainRaw = JSON.parse(

360357

await fs.readFile(path.join(mainAgentDir, "auth-profiles.json"), "utf8"),

361358

) as AuthProfileStore;

362-

expectPersistedOpenAICodexProfileWithoutInlineTokens(mainRaw.profiles[profileId], {

359+

expectPersistedOpenAICodexProfile(mainRaw.profiles[profileId], {

360+

access: "main-owner-refreshed-access",

361+

refresh: "main-owner-refreshed-refresh",

363362

expires: freshExpiry,

364363

accountId,

365364

});

366-

expect(JSON.stringify(mainRaw)).not.toContain("main-owner-refreshed-access");

367-

expect(JSON.stringify(mainRaw)).not.toContain("main-owner-refreshed-refresh");

368365

});

369366370367

it("inherits main-agent credentials via the catch-block fallback when refresh throws after main becomes fresh", async () => {

@@ -432,10 +429,11 @@ describe("resolveApiKeyForProfile OAuth refresh mirror-to-main (#26322)", () =>

432429

const subRaw = JSON.parse(

433430

await fs.readFile(path.join(subAgentDir, "auth-profiles.json"), "utf8"),

434431

) as AuthProfileStore;

435-

expectPersistedOpenAICodexProfileWithoutInlineTokens(subRaw.profiles[profileId], {

432+

expectPersistedOpenAICodexProfile(subRaw.profiles[profileId], {

433+

access: "cached-access-token",

434+

refresh: "refresh-token",

436435

accountId: "acct-shared",

437436

});

438-

expect(JSON.stringify(subRaw)).not.toContain("cached-access-token");

439437

});

440438441439

it("does not satisfy forced refresh from unchanged main-agent credentials after refresh fails", async () => {