01 · Which Secrets have no source?
Every Secret without an ExternalSecret behind it.
The assistant lists Secrets in application namespaces. For each one, it looks for
an ExternalSecret that produces it. It reads names, types and
key names only. Its cluster access is read-only, and it never sees a
secret value.
Here the assistant finds payments/stripe-webhook, with two keys, created by hand.
It also finds a committed smtp-relay Secret in the repository.
02 · Not every Secret should move
Some belong to a chart, some aren't secret at all.
The assistant leaves some Secrets alone. These are Secrets that a chart's own bootstrap Job writes,
and Secrets named after a Helm release in the same namespace.
If the assistant shipped them again, it would fight the chart.
TLS and CA material goes to review, because an empty key-value store path
would overwrite a working certificate. If a committed
Secret holds values that are plainly not credentials, the assistant proposes a
ConfigMap instead.
03 · Write the ExternalSecret
Same name, same keys, backed by your store.
The ExternalSecret mirrors the Secret's keys, with one
remoteRef per key. If the cluster has exactly one
ClusterSecretStore, the assistant uses it. If there are several, your configured default
wins. If you set no default, the MR asks you to choose.
For a committed Secret, the same MR deletes the static manifest. Git and the
ExternalSecret then never both own it.
04 · Seed Vault on merge
No manual vault kv put.
An ExternalSecret that points at an empty path would replace a working
Secret with an empty one. So the MR pairs it with a
PushSecret. The PushSecret copies the live value into Vault once, on
merge. It never overwrites or deletes the value afterwards.
The value goes from the cluster to Vault inside your cluster. It
never passes through the assistant, the AI model (LLM) or the MR.
05 · Secrets hiding in Helm values
Credential-shaped values become references.
When the assistant migrates or adopts a HelmRelease, it scans the values for
credential-shaped leaves. Examples are a password key or a token pasted into a
startup script. It rewrites each one to a reference. One
ExternalSecret then supplies them all through valuesFrom.
The assistant declines anything ambiguous and does not guess. The MR then carries a
scaffold and a note instead.
06 · Scan every diff
Before any MR opens, not after.
The assistant checks every diff from every agent for literal-looking
credentials. These include API keys, tokens, passwords and client secrets. A hit
withholds the MR.
ExternalSecret edits get their own checks. The checks look for a renamed
remoteRef key, a template that reverts to the old engine,
a rewrite that matches everything, and a deletionPolicy
that flips to Delete.
07 · Before a restart bites
A missing Secret only fails when the pod restarts.
The assistant holds a diff that makes a workload use a Secret that exists nowhere,
in git or in the cluster. The next pod start would fail
with CreateContainerConfigError.
When an ExternalSecret stops syncing, the issue names the workloads
that use its Secret. You can then fix the stale credential before the
next rollout picks it up.
08 · Keeping ExternalSecrets current In development
Operator upgrades that remove old API and template versions.
When the External Secrets Operator stops serving an old API version,
every Helm release that still renders it fails at its next upgrade.
The assistant reports these failures today, with one issue per release.
Grouping them into one issue per cause is built, but not yet switched on.
Roadmap Before an operator upgrade,
the assistant will sweep live ExternalSecrets for defaults that the new version removes (such
as a stored template engine version). It will then propose to declare them.