Cline/ClinePass requests failed with HTTP 401 ("Please make sure you are using
the latest version of Cline and re-authenticate your Cline account", #3230 /
#2333 / #3644). `getClineAccessToken()` unconditionally prefixed every token
with `workos:`, which is correct for Cline OAuth access tokens (WorkOS JWTs)
but wrong for ClinePass API keys — those are opaque strings (e.g. `clp_…`)
that the API accepts only verbatim, so the `workos:`-prefixed value was
rejected.
Only prefix tokens that look like a WorkOS JWT (`eyJ…`); API keys and other
opaque tokens pass through untouched, and an existing `workos:` prefix is
never doubled.
Also register `clinepass` in the token-refresh handlers. ClinePass shares
Cline's WorkOS auth endpoints, but without the entry expired ClinePass OAuth
tokens were never rotated, so every request kept 401ing. Finally, list
`apikey` first in the ClinePass `authModes` (ClinePass is meant to be used
with an API key from app.cline.bot/settings/api-keys), and add an "Import
from /models" button that pulls the live Cline catalog into custom models.
61 lines
2.0 KiB
JavaScript
61 lines
2.0 KiB
JavaScript
export default {
|
|
id: "clinepass",
|
|
priority: 85,
|
|
alias: "clinepass",
|
|
uiAlias: "clinepass",
|
|
display: {
|
|
name: "ClinePass",
|
|
icon: "vpn_key",
|
|
color: "#5B9BD5",
|
|
textIcon: "CP",
|
|
website: "https://cline.bot",
|
|
notice: {
|
|
signupUrl: "https://app.cline.bot",
|
|
},
|
|
},
|
|
category: "oauth",
|
|
// ClinePass authenticates with a plain API key from app.cline.bot/settings/api-keys
|
|
// (category "apikey"). The OAuth extension flow used by Cline does not issue
|
|
// tokens that the ClinePass API consumer endpoint accepts (HTTP 401) — see #2333.
|
|
authModes: ["apikey", "oauth"],
|
|
hasOAuth: true,
|
|
transport: {
|
|
baseUrl: "https://api.cline.bot/api/v1/chat/completions",
|
|
headers: {
|
|
"HTTP-Referer": "https://cline.bot",
|
|
"X-Title": "Cline",
|
|
},
|
|
auth: {
|
|
combined: true,
|
|
header: "Authorization",
|
|
scheme: "bearer",
|
|
hooks: [
|
|
"clineHeaders",
|
|
],
|
|
},
|
|
},
|
|
models: [
|
|
{ id: "cline-pass/glm-5.2", name: "GLM-5.2 (ClinePass)" },
|
|
{ id: "cline-pass/kimi-k2.7-code", name: "Kimi K2.7 Code (ClinePass)" },
|
|
{ id: "cline-pass/kimi-k2.6", name: "Kimi K2.6 (ClinePass)" },
|
|
{ id: "cline-pass/deepseek-v4-pro", name: "DeepSeek V4 Pro (ClinePass)" },
|
|
{ id: "cline-pass/deepseek-v4-flash", name: "DeepSeek V4 Flash (ClinePass)" },
|
|
{ id: "cline-pass/mimo-v2.5", name: "MiMo-V2.5 (ClinePass)" },
|
|
{ id: "cline-pass/mimo-v2.5-pro", name: "MiMo-V2.5-Pro (ClinePass)" },
|
|
{ id: "cline-pass/minimax-m3", name: "MiniMax M3 (ClinePass)" },
|
|
{ id: "cline-pass/qwen3.7-max", name: "Qwen3.7 Max (ClinePass)" },
|
|
{ id: "cline-pass/qwen3.7-plus", name: "Qwen3.7 Plus (ClinePass)" },
|
|
],
|
|
oauth: {
|
|
appBaseUrl: "https://app.cline.bot",
|
|
apiBaseUrl: "https://api.cline.bot",
|
|
authorizeUrl: "https://api.cline.bot/api/v1/auth/authorize",
|
|
tokenUrl: "https://api.cline.bot/api/v1/auth/token",
|
|
refreshUrl: "https://api.cline.bot/api/v1/auth/refresh",
|
|
},
|
|
thinkingConfig: {
|
|
options: ["auto", "on", "off"],
|
|
defaultMode: "auto",
|
|
},
|
|
};
|