Skip to content

CredentialSignInTokensRequest

A subscription sign-in’s tokens that you already hold, made into an OAuth credential (or replacing the tokens of one made that way). By default you keep them fresh: the platform never refreshes them, and you send new ones each time you refresh. With keepFresh, the platform takes that over. The name, description and tag are the new credential’s; replacing tokens keeps the credential’s own.

Kind: an object, used in requests.

FieldTypeRequiredDescription
toolCredentialOAuthToolThe coding agent the sign-in is for.
accessTokenstringThe access token. Write-only.
refreshTokenstringThe refresh token, which the coding agent may need during a long run. Write-only.
idTokenstring | nullThe OpenID Connect ID token. Required for Codex; null for Claude. Write-only.
expiresAtUtcdatetimeWhen the access token expires (UTC).
scopesstring[] | nullThe scopes the tokens carry.
subscriptionTypestring | nullThe subscription the sign-in belongs to, as the provider names it (for example max).
accountNamestring | nullWho signed in, as the provider shows it.
namestring | null
descriptionstring | null
tagstring | null
keepFreshbooleanTrue: the platform keeps these tokens fresh from now on, with the refresh token, as it does for a sign-in made here. Stop refreshing them yourself: a refresh replaces the refresh token, so only one side can keep doing it. Replacing the tokens of a sign-in you’ve been refreshing with this set hands it over. Once handed over it can’t be handed back; sign in again for new tokens. False (default): you keep them fresh.
{
"tool": "Claude",
"accessToken": "...",
"refreshToken": "...",
"idToken": "...",
"expiresAtUtc": "2026-10-26T12:00:00.0000000Z",
"scopes": [
"..."
],
"subscriptionType": "...",
"accountName": "...",
"name": "...",
"description": "...",
"tag": "...",
"keepFresh": false
}