Skip to content

Commit e92dbb5

Browse files
waleedlatif1claude
andcommitted
fix(mcp): tolerate decrypt failure when comparing stored oauth secret
Treat decryption failure (corrupted ciphertext, rotated key) as a secret change so admins can overwrite an unusable stored secret instead of the PATCH/POST failing with a 500. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 0180cf3 commit e92dbb5

2 files changed

Lines changed: 14 additions & 6 deletions

File tree

apps/sim/app/api/mcp/servers/[id]/route.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,13 @@ export const PATCH = withRouteHandler(
135135
} else if (!currentServer?.oauthClientSecret) {
136136
clientSecretChanged = true
137137
} else {
138-
const currentPlaintext = (await decryptSecret(currentServer.oauthClientSecret))
139-
.decrypted
140-
clientSecretChanged = currentPlaintext !== oauthClientSecret
138+
try {
139+
const currentPlaintext = (await decryptSecret(currentServer.oauthClientSecret))
140+
.decrypted
141+
clientSecretChanged = currentPlaintext !== oauthClientSecret
142+
} catch {
143+
clientSecretChanged = true
144+
}
141145
}
142146
}
143147
const oauthCredsChanged = clientIdChanged || clientSecretChanged

apps/sim/app/api/mcp/servers/route.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,13 @@ export const POST = withRouteHandler(
173173
} else if (!existingServer.oauthClientSecret) {
174174
clientSecretChanged = true
175175
} else {
176-
const currentPlaintext = (await decryptSecret(existingServer.oauthClientSecret))
177-
.decrypted
178-
clientSecretChanged = currentPlaintext !== body.oauthClientSecret
176+
try {
177+
const currentPlaintext = (await decryptSecret(existingServer.oauthClientSecret))
178+
.decrypted
179+
clientSecretChanged = currentPlaintext !== body.oauthClientSecret
180+
} catch {
181+
clientSecretChanged = true
182+
}
179183
}
180184
}
181185
const oauthCredsChanged = clientIdChanged || clientSecretChanged

0 commit comments

Comments
 (0)