

What assistants may do: defaults, rules for some clusters and namespaces, and one namespace checked.
/assistants/permissions.
The settings
Five settings, each from the loosest to the strictest:
What each one does for an assistant is under What assistants see.
Defaults
Defaults apply “Wherever no rule says otherwise”: every namespace, and each cluster’s own objects. They have every setting but Visibility: without a rule that hides it, everything is visible. Values for Secrets warns that “Assistants read Secret values, and send them to their model’s provider.” On a server, where an administrator’s rule keeps a setting stricter, it says so, like “Your administrator keeps “Production” at Ask you.”Rules
A rule says otherwise somewhere: some clusters, some namespaces, or some namespaces of some clusters. It has a name, where it applies, and the settings it says. A setting a rule leaves Not set is up to the other rules, and the defaults.Where a rule applies
A rule names clusters (Contexts in the desktop app, Clusters in a fleet) and Namespaces. Each takes any number of these:
A rule applies to any of what it names, but none of what it leaves out. With only
! entries, it applies to everything else. With none at all, to all of them: a rule that names no namespaces is about every namespace, and the cluster’s own objects too.
- A rule that names namespaces is about what’s in them, and the Namespace objects themselves. What assistants read of the cluster’s own objects, every cluster-scoped kind but Namespace (nodes, CustomResourceDefinitions, cluster roles and their bindings, webhook configurations, persistent volumes, storage classes…), follows the rules that name no namespaces, and the defaults. The tab says: “A rule that names namespaces is about what’s in them; a cluster’s own objects (nodes, custom resource definitions, cluster roles…) are read as the rules that name none say, and changing one can reach every namespace, so it’s only as allowed as every namespace is.”
- Changing one of the cluster’s own objects can reach into every namespace: deleting a CustomResourceDefinition deletes its objects everywhere, and a cluster role or a webhook acts in all of them. So a change to one is decided as the strictest of the cluster’s settings and every namespace’s. It’s refused where any namespace is hidden, Never, or hides its Secrets; it asks you where any namespace asks; and it’s made without asking only where all of them allow it. Refused, the assistant hears who decided: “CustomResourceDefinition rollouts.argoproj.io is demo’s own: a change to it can reach every namespace, and assistants may not change all of them: the person’s AI permissions say so (“System”). Nothing was changed.” When the namespaces can’t be listed, Lumovi can’t tell, and refuses: “Lumovi can’t tell which namespaces that would reach: …” So a rule that hides a namespace, like the system ones, or hides its Secrets, keeps assistants from changing any of the cluster’s own objects. The tab says where, under its rules: “Assistants can’t change the cluster’s own objects in demo, staging: some of their namespaces are hidden, refused, or hide their Secrets.” It counts the namespaces it can list; a cluster whose namespaces it can’t list isn’t named there, and assistants can’t change its own objects either.
-
Clusters have labels in a fleet, from how the fleet describes them, and on a Lumovi of one cluster, as its administrator gives them (
LUMOVI_CLUSTER_LABELS). The desktop app’s contexts have none, so there a label matches no context, and!with a label leaves none out: name them, or use a pattern. - On a Lumovi of one cluster, a rule has only Namespaces.
Where rules overlap
Where several rules apply, the strictest wins, setting by setting. Where none says a setting, the defaults do. A rule can be looser than the defaults: Without asking for a cluster you use to try things, say, while the defaults ask. But where two rules apply, the stricter one wins. Say the defaults ask, “Staging” lets assistants change thestaging cluster without asking, and “Database” says Never for every data namespace. In staging, the data namespace takes no changes, and every other namespace changes without asking.
Labels Lumovi can’t read
Lumovi reads namespaces’ labels as you may: the cluster’s list of namespaces, kept for 15 seconds, or else the one namespace. When it can read neither, it can’t tell whether a rule that matches by label applies there. Such a rule counts where it’s stricter, and not where it’s looser, so what’s decided is never looser than what’s so. A namespace that doesn’t exist yet has no labels.- An assistant creating or relabelling a Namespace is decided both by its labels as they are and as the change would leave them: the stricter wins, and a namespace hidden either way isn’t found. So an assistant can’t label its way out of a rule.
- People relabelling namespaces change which rules apply there, as soon as Lumovi reads the labels again, within 15 seconds. That’s as meant: a label rule follows the label. Match by label only what you trust the label for, and keep labelling namespaces to those you trust.
Read-only, and your access
A cluster you made read-only takes no changes, whatever the rules say. And whatever they say, an assistant can’t do more than your own access (RBAC) allows.Your administrator’s rules
On a server, its administrator can set rules too: limits that nothing loosens. They come first on the tab, with a lock and Set by your administrator, and you can’t change them. Where one is stricter than what yours say, it wins: a rule card says so, like “Shop logs: Logs stay at Don’t read in 1 of these namespaces, as your administrator set.” See AI assistants for your team.What assistants see
Lumovi’s tools keep to what’s decided for where they act. Changes to it apply at once, to assistants connected already too.Env values: Show, Hide sensitive, Hide all
Env values: Show, Hide sensitive, Hide all
Env values written into containers, in pods, workloads’ templates and custom resources alike, read
(hidden by Lumovi):- Hide sensitive: those whose names say they’re sensitive, by any of their words, in any case:
pass,password,passwd,passphrase,pwd,pw,secret,secrets,token,tokens,key,keys,apikey,credential,credentials,cred,creds,auth,authorization,private,cert,certificate,dsn,jwt,bearer,pat,sk,session,cookie,salt,sig,signature,hmac,conn,connstr. Words are split at anything but a letter or a digit, and where a capital starts one:DB_PASSWORD,apiKey. Some run together count too:password,passwd,secret,token,apikey,privatekey,credential,connectionstring, soGITHUBTOKENis hidden, andMONKEYisn’t. And those whose values carry credentials: a URL with a password, likepostgres://app:hunter2@db/apporredis://:hunter2@cache; one with a token in its query, like?access_token=…or&sig=…; and Slack, Discord and Office webhooks’ addresses. - Hide all: every one.
Logs: Don't read
Logs: Don't read
get_logs is refused:Lumovi doesn’t let AI assistants read logs in shop: the person’s AI permissions say so (“Shop”).
Changes: Without asking, Ask you, Never
Changes: Without asking, Ask you, Never
Decided where the change is: in the object’s namespace, or by a Namespace’s own name. For the cluster’s own objects, as the strictest of the cluster and every namespace, above. With Never, the change is refused before anything’s tried, naming where, a Namespace by its own name, like “change payments in demo”:
Lumovi doesn’t let AI assistants change monitoring in demo: the person’s AI permissions say so (“Monitoring”). Nothing was changed.With Ask you, it waits for your answer. See Approving changes. With Without asking, it’s made after the cluster’s dry run, and you’re told, but these still ask:
- Deletions.
- Changes that take fields over from what manages them, like Helm, Argo CD or an autoscaler.
- Changes that make something read a Secret it didn’t before: an env var or
envFromfrom one, a volume of one (projected ones too), or a CSI driver’snodePublishSecretRef, since what it runs could log it. Unless Secrets is Values there. Scaling or restarting what reads one already doesn’t ask for that.
What they’re told as they start
list_clusters tells assistants, for each cluster they may see, what they may do with it, and the rules that say otherwise in some of its namespaces, so they don’t try what they can’t, and can tell you why:
changes says read-only for a read-only cluster. An administrator’s rule says at most, like logs: at most off. Rules that hide aren’t told.
The Permissions tab
At a glance
Counted over every namespace of every cluster you can list: the namespaces assistants see (and how many are hidden), where changes ask you first, where changes are made without asking, where they may read logs, and where they may read Secret values. A cluster whose namespaces you can’t list isn’t counted, and the tab says so: “Not counted: edge, whose namespaces can’t be listed.”Rules
Rules lists your administrator’s first, then yours. Each says where it applies, likeall contexts / kube-*, what it says, like Hidden from assistants or Changes without asking, and how much it matches, like “2 namespaces · 2 contexts”. Choose one to edit it, or Add rule for a new one.


A rule open in its editor, with what's typed suggested as a pattern or a name, and what it matches.
- Name, as the rule’s card, and refusals, say it.
- Contexts or Clusters, and Namespaces: type, and Lumovi suggests what you may mean, a pattern of what starts so, names and labels that fit, each with how much it matches, or “none yet”. ↵ adds the first, Esc clears what’s typed, and ⌫ in an empty field takes the last one off. What can’t be one says why, like “It has a space.” or “A label is key=value, as Kubernetes spells them (team=payments).”
- Where it matches, assistants may: each setting, or Not set.
- What it matches: how many namespaces, in how many clusters, a few of them by name, and Find in these for the rest.
- Delete rule, and Done.
Check a namespace
Find any namespace, and see what an assistant may do there: each setting, and what decided it, Defaults, a rule’s name, or a rule’s name “by your administrator”. A hidden namespace shows nothing else, and a read-only cluster’s changes read Never: read-only. Your own access applies after all of it.Assistants know their limits
Whatlist_clusters tells assistants as they start, cluster by cluster, as above. “What a rule hides, they never learn exists.”
Kept as you go
Lumovi keeps what you change a moment after you stop: the tab says Keeping…, then Kept. When it can’t, it says why, with Try again: “Not kept: …”.Where they’re kept
In the desktop app, with Lumovi’s other settings, insettings.json, which only your account can read on macOS and Linux. Upgrading from Lumovi 1.4 or before, each context’s Ask, Allow or Never becomes a rule named after the context: Allow as Without asking, and Never as Never. Ask needs none: it’s the default. A context named like a pattern, with a *, keeps its Never, as a pattern, but not its Allow, and one whose name has a space or = isn’t kept: set it again.
When what’s kept can’t be read, edited by hand into something that doesn’t make sense, say, assistants get nothing until you set your permissions again: no changes, no Secrets, no env values and no logs. The Permissions tab says so: “Your AI permissions couldn’t be read (Lumovi’s settings were edited into something that doesn’t make sense): assistants may do nothing until you set them again.” Lumovi leaves what it couldn’t read in settings.json as it was, so this lasts across restarts, until you change a permission.
In your cluster: each person’s are kept on the server, the same in every browser they sign in with, and every page of theirs, and their assistants, follow a change at once. The administrator decides where: a ConfigMap the Helm chart makes, a file, or only memory. In memory, the tab says “This server keeps AI permissions in memory: when it restarts, yours are gone, and assistants do what the defaults say until you set them again.” See AI assistants for your team.
Assistant tools
What each tool does, and what it’s refused.
AI assistants for your team
For administrators: limits for everyone, and where people’s rules are kept.