"message": "pods is forbidden: User \"alice\" cannot delete resource \"pods\" in the namespace \"prod\"",
"requestId": "4f1c…"
}
error is a stable code you can branch on. message is for people and can change. requestId matches the server log line for the failure, so include it when you report a problem. detail holds the Kubernetes API server’s own reason when it refused a request (such as cannot unmarshal string into Go struct field DeploymentSpec.spec.replicas of type int32) or where a YAML stops parsing; outside production mode it may add other technical context, and source names the code that answered.
The bearer token or proxy headers aren’t valid, or the cluster refused KubeGlass’s credentials
sign_in_required
401
In oidc and token modes: there is no sign-in session, or it ended. The UI goes to the sign-in page
cookie_conflict
401
In oidc and token modes: the browser sent more than one KubeGlass session cookie, as when another site under the domain set one, so KubeGlass believes none of them. Delete the site’s cookies in the browser, then sign in again. A WebSocket refused for this closes with 4401 and the reason cookie_conflict
csrf_failed
403
A request with a sign-in session that changes something didn’t come from a KubeGlass page: it was cross-site, or it lacked the session’s X-CSRF-Token
token_other_cluster
403
Signed in with a pasted token (token mode), you asked for another cluster than the token’s. The token is only sent to its own cluster
forbidden
403
Kubernetes RBAC doesn’t allow this for you. The message is Kubernetes’ own
admin_required
403
Only KubeGlass admins may do this (adding clusters, changing settings, audit log, drift). See admin_users
act_as_forbidden
403
You chose “Act as…” for an identity you aren’t allowed to impersonate
read_only
403
KubeGlass runs read-only (--read-only), or you marked this cluster read-only and the request carries X-KubeGlass-Read-Only: 1. The message says which
not_found
404
The resource doesn’t exist, or you can’t see it
conflict
409
The resource changed since you loaded it. Reload and apply again
edit_conflict
409
An edit from the YAML editor changes a field that also changed on the cluster since the editor loaded it. fields names them, live is the object now and rebased is the object now with the edit’s other changes; send the edit again with "overwrite": true to keep your values
already_exists
409
A resource with that name exists
context_mismatch
409
The request’s X-KubeGlass-Context names another cluster than its session is on, as after the session was replaced. context names the session’s cluster, and the UI moves the tab there and says so
bad_request
400
The request doesn’t make sense as sent
invalid
422
The API server refused the object as invalid. The message is its own and names the fields, such as an immutable ConfigMap’s data or a TLS Secret without tls.key
rate_limited
429
Too many requests from this client; retry after the Retry-After header
internal_error
500
Something failed inside KubeGlass. Check the log for the requestId
A parameter or field has a value KubeGlass can’t use
missing_field, missing_name
400
Something required is missing
invalid_namespace, invalid_name
400
Not a valid Kubernetes name
invalid_body, invalid_request
400
The body can’t be decoded
body_too_large
413
The request body is over the limit (max_request_body_size, max_dynamic_body_size for a manifest or a YAML apply, or 256 MiB for a file uploaded to a pod)
empty_yaml, no_objects, too_many_objects
400
The YAML holds no objects, or more than 500
apply_failed
422
Every object of a manifest failed; data.results says why each one did
manifest_fetch_failed
400, 502
A manifest URL can’t be fetched: not HTTPS, not a public address, larger than 2 MiB, not YAML or JSON, or the server didn’t answer
name_mismatch, namespace_mismatch
400
The manifest names a different resource than the URL
invalid_yaml
422
The YAML doesn’t parse as one object; detail names the line
edit_changes_identity
422
An edit changes the object’s apiVersion, kind, name or namespace, which an edit can’t do
From POST /api/v1/namespaces/{namespace}/{resource}/{name}/revert:
Code
Status
Means
already_reverted
409
The change was already undone
changed_since
409
The fields the change set have changed again since, so undoing it would undo the later change too. paths lists those fields
replaced
409
The object was deleted and created again under the same name since the change, so undoing it would change another object
not_revertible
422
KubeGlass can’t undo this change: a Secret’s values, a change too large to keep, one whose copy was dropped, a config write or an older revision read from the cluster’s records, a Helm release’s revision (roll it back with Helm), a change to an object deleted since, an automatic change whose updates removed a field that holds other fields and set it again, or a kind of change it doesn’t undo
not_found
404
KubeGlass has no record of that change to this object
The cluster’s API server answered that it can’t handle the request right now (its own 503). Asking again in a moment may work
request_timeout
503
The request ran past KubeGlass’s limit for it, so KubeGlass stopped waiting: 30 seconds for most API requests, up to 55 for those that download from a chart repository, check many clusters or apply a manifest, and 15 minutes for file transfers. The UI doesn’t send it again by itself
timeout
504
The API server said the request timed out, or listing a folder or reading a file for its preview in the Files view took longer than 20 seconds, as a folder of very many entries on a busy node or a pipe can. The UI doesn’t send it again by itself
credentials_failed
502
The kubeconfig’s credential plugin (such as aws, gke-gcloud-auth-plugin or kubelogin) failed, so KubeGlass had no credentials to ask the cluster with. The message ends with the plugin’s error
context_not_found
404
No kubeconfig context with that name
context_switch_failed
500
Switching to the context failed; the message says why
invalid_kubeconfig, kubeconfig_too_large
400
The pasted or uploaded kubeconfig can’t be used
cert_untrusted
400
Adding a cluster by token: the cluster’s certificate isn’t trusted. Paste its CA certificate, or turn on not checking the server’s certificate
token_refused, token_forbidden
400
Adding a cluster by token: the cluster refused the token, or took it but it may not read the cluster’s version. Adding a cluster never answers 401 or 403
invalid_connection
400
Adding a cluster by token: no client can be made with the settings, as with a CA certificate that isn’t one
unreachable, connect_failed
502
Adding a cluster by token: nothing answered at the address (the message says what the connection got), or the cluster answered with an error
discovery_failed
502
API discovery against the cluster failed
no_cluster
503
KubeGlass is in setup mode, waiting for a kubeconfig
Another chart repository has that name, at the URL the message names; add this one under another name, or update that one
revision_not_found, no_rollback_target
404, 400
The revision to roll back to doesn’t exist
too_many_helm_operations
429, 503
You run 16 Helm operations already (429), or all users run 1024 (503); start this one when one has ended
portforward_limit_reached
429
Too many port-forwards open
portforward_timeout
504
The pod didn’t accept the port-forward in time
too_many_transfers
429
Too many file uploads and downloads are running: 6 per user, 32 in all; retry after the Retry-After header
POST /auth/token (token mode) answers token_rejected (401) when the cluster doesn’t accept the token, invalid_token (400) when it isn’t one, and cluster_unreachable (502) when KubeGlass couldn’t ask. Failed OIDC sign-ins return to the sign-in page with ?error= set to state, denied, provider, exchange, token, busy or internal; Sign-in explains them.
Other codes are specific to one endpoint (for example range_too_wide for a metrics query or sso_session_limit for sign-in through an identity provider). Their message explains what to change.