|
Every "AI for Kubernetes" tool says it is safe. I want to know what specifically stops this thing from deleting a production StatefulSet because an LLM hallucinated a root cause. Concretely:
|
Replies: 1 comment
|
Good question to be sceptical about, and the honest answer has four separate layers rather than one "safe mode" switch. None of them relies on the model behaving well — that is the design premise. 1. It can mutate, and every mutating path stops for a humanIt is not read-only. That is the deliberate difference from read-only diagnostic tools: it can scale, restart, patch and delete. But every mutating command passes through one chokepoint that requires an explicit human approval in the same session — you type This applies to every role, including
2. Role-based limits sit underneath that, and they refuse before the prompt
A 3. Two blocklists the agent cannot argue withIndependent of role and of the model: KUBECTL_BLOCKED_NAMESPACES=kubeintellect,monitoring,kube-system,kube-public,kube-node-lease,ingress-nginx,cert-manager
KUBECTL_BLOCKED_RESOURCES=secret,secrets,serviceaccount,serviceaccounts
This is enforced in the application, before the Kubernetes API call and before the approval prompt. That layering is deliberate: cluster RBAC controls what the ServiceAccount can do; the blocklist controls what the agent is allowed to ask for, so you get a clear refusal in your session instead of an opaque API error. Cluster-side RBAC is still the outer boundary — 4. "Run it and walk away" — the autonomy ladder, default A1This is the part of your question I would most want answered too. The watchtower can run investigations unprompted, and its level decides what that means (
The default is A1: it investigates and reports, and never touches the cluster. A3 requires both that the namespace is set to A3 and that the specific You can also set levels per namespace: What I would actually do for a production cluster
Where I would push back on my own answerThe gate is procedural, not a proof: it guarantees a human sees and approves each mutating command, not that the human reads it carefully at 3am. It reduces "the AI did something surprising" to "I approved something I did not fully read", which is a better failure mode but not zero. The dry-run diff exists to make that approval meaningful — judge it on whether the diff is actually legible. And LLM answers can be wrong. That is the entire reason the gate exists, rather than something the gate makes irrelevant. Related: |
Good question to be sceptical about, and the honest answer has four separate layers rather than one "safe mode" switch. None of them relies on the model behaving well — that is the design premise.
1. It can mutate, and every mutating path stops for a human
It is not read-only. That is the deliberate difference from read-only diagnostic tools: it can scale, restart, patch and delete. But every mutating command passes through one chokepoint that requires an explicit human approval in the same session — you type
yesor/approve. There is no "the model was confident so it proceeded" path.This applies to every role, including
superadmin. Fromv4/docs/security.md§ 2: