Skip to content

Commit 4aa97f9

Browse files
committed
validate credential reference shape in manage_auth_connections create
Cursor Bugbot caught that we were sending invalid credential payloads when only credential_path or credential_auto was provided without credential_provider. Add upfront validation so the agent gets a clear MCP-level error instead of a generic API rejection.
1 parent c3bd9d6 commit 4aa97f9

1 file changed

Lines changed: 39 additions & 14 deletions

File tree

src/app/[transport]/route.ts

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2304,24 +2304,49 @@ Based on your issue "${issue_description}", start with:
23042304
],
23052305
};
23062306
}
2307+
const hasName = !!params.credential_name;
2308+
const hasProvider = !!params.credential_provider;
2309+
const hasPath = !!params.credential_path;
2310+
const hasAuto = params.credential_auto !== undefined;
2311+
if (hasName && (hasProvider || hasPath || hasAuto)) {
2312+
return {
2313+
content: [
2314+
{
2315+
type: "text",
2316+
text: "Error: credential_name cannot be combined with credential_provider, credential_path, or credential_auto. Use one of: { credential_name } for Kernel credentials, { credential_provider, credential_path } for an external provider item, or { credential_provider, credential_auto: true } for provider domain lookup.",
2317+
},
2318+
],
2319+
};
2320+
}
2321+
if ((hasPath || hasAuto) && !hasProvider) {
2322+
return {
2323+
content: [
2324+
{
2325+
type: "text",
2326+
text: "Error: credential_path and credential_auto require credential_provider.",
2327+
},
2328+
],
2329+
};
2330+
}
2331+
if (hasProvider && !hasPath && !hasAuto) {
2332+
return {
2333+
content: [
2334+
{
2335+
type: "text",
2336+
text: "Error: credential_provider requires either credential_path or credential_auto: true.",
2337+
},
2338+
],
2339+
};
2340+
}
23072341
const credential =
2308-
params.credential_name ||
2309-
params.credential_provider ||
2310-
params.credential_path ||
2311-
params.credential_auto !== undefined
2342+
hasName || hasProvider
23122343
? {
2313-
...(params.credential_name && {
2314-
name: params.credential_name,
2315-
}),
2316-
...(params.credential_provider && {
2344+
...(hasName && { name: params.credential_name }),
2345+
...(hasProvider && {
23172346
provider: params.credential_provider,
23182347
}),
2319-
...(params.credential_path && {
2320-
path: params.credential_path,
2321-
}),
2322-
...(params.credential_auto !== undefined && {
2323-
auto: params.credential_auto,
2324-
}),
2348+
...(hasPath && { path: params.credential_path }),
2349+
...(hasAuto && { auto: params.credential_auto }),
23252350
}
23262351
: undefined;
23272352
const proxy = buildProxy();

0 commit comments

Comments
 (0)