Claude Cursor GitHub Copilot Skill

argocd-gitops-review

Use this skill for Argo CD GitOps review across Application, AppProject, ApplicationSet, sync windows, RBAC, sync impersonation, and Argo CD Agent multi-cluster topologies. Trigger when the user asks whether an Argo CD configuration is safe for production, whether automated sync

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download vincentchuwaichow-vanguard-frontier-agentic-skills_argocd_argocd-gitops-review-febe32a.zip · 9 KB
Part of vincentchuwaichow/vanguard-frontier-agentic — 293 skills

Install

skills CLI npx skills add https://github.com/VincentChuWaiChow/vanguard-frontier-agentic/tree/master/skills/argocd/argocd-gitops-review
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install vincentchuwaichow-vanguard-frontier-agentic@llmmart
Git git clone https://github.com/VincentChuWaiChow/vanguard-frontier-agentic.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole vincentchuwaichow/vanguard-frontier-agentic collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Argo CD GitOps Review

Purpose

Review Argo CD Application, AppProject, ApplicationSet, sync windows, RBAC, and the central argocd-cm / argocd-rbac-cm configuration against blast radius, drift handling, and least-privilege sync identity. Argo CD's controller defaults to cluster-admin permissions on every destination cluster — the security posture lives in AppProject boundaries, sync impersonation, and explicit RBAC, not in the controller defaults.

Lean operating rules

  • Prefer live cluster evidence (kubectl get applications,appprojects,applicationsets -n argocd -o yaml plus the argocd-cm and argocd-rbac-cm ConfigMaps) when the active client exposes it; otherwise fall back to official Argo CD documentation and sanitized YAML from the user.
  • Separate confirmed facts from inference. If sync history, current health, or RBAC binding state was not queried, say so.
  • Treat application.sync.impersonation.enabled: false (default) in production as a critical finding — every sync runs as the controller's cluster-admin ServiceAccount.
  • Treat AppProject with sourceRepos: ['*'] and destinations: ['*'] as a wide-blast-radius finding — any commit in any repo can deploy anywhere.
  • Treat automated.prune: true + automated.selfHeal: true on production Applications as critical without an explicit allowlist of authorized Git refs and a tested rollback runbook — Git divergence becomes irreversible deletion.
  • Challenge ApplicationSet generators that include unbounded clusters (clusters: {}) or label selectors with no exclusion — one mis-labeled cluster joins the rollout.
  • Challenge syncOptions: ['Replace=true'] and syncOptions: ['ServerSideApply=false'] on stateful resources — Replace deletes-then-creates, breaking PVC bindings.
  • Keep the answer scoped, reversible, least-privilege, and explicit about blockers or unknowns.

References

Load these only when needed:

  • Evidence path and tooling — use when choosing live cluster evidence, confirming Argo CD install state and version, or switching to documentation mode.
  • Workflow and output contract — use when executing the full review, applying stress checks on Application / AppProject / ApplicationSet, or formatting the final answer.
  • Official sources — use when you need the detailed Argo CD documentation list, RBAC syntax, and grounded insights from the project.

Response minimum

Return, at minimum:

  • the scoped target (Application, AppProject, ApplicationSet, or argocd-rbac-cm policy) and evidence level,
  • the sync identity (controller default cluster-admin, impersonated ServiceAccount, or destinationServiceAccount),
  • the blast radius assessment (sourceRepos, destinations, clusterResourceWhitelist, namespaceResourceBlacklist),
  • the drift handling posture (automated, prune, selfHeal, syncWindows),
  • the safest next actions and rollback plan,
  • the assumptions or blockers that prevent stronger conclusions.
Files (vanguard-frontier-agentic)
  • references
    • mcp-and-evidence.md 2.9 KB
      # Evidence Path and Tooling
      
      ## Evidence path
      
      1. Prefer live cluster evidence when a Kubernetes MCP server, `kubectl`, or the `argocd` CLI is available against the Argo CD control-plane cluster.
      2. Fall back to official Argo CD documentation (argo-cd.readthedocs.io) and the upstream argo-cd GitHub repository when live inspection is unavailable.
      3. Ask only for sanitized `Application` / `AppProject` / `ApplicationSet` YAML, the redacted `argocd-cm` and `argocd-rbac-cm` ConfigMaps, and `argocd app history` output when current-state proof matters.
      4. Label conclusions as `live evidence`, `documentation-based`, `sanitized user evidence`, or `inference`.
      
      ## Useful live-evidence commands
      
      ```shell
      # All Applications, AppProjects, and ApplicationSets in the argocd namespace
      kubectl -n argocd get applications,appprojects,applicationsets -o yaml
      
      # Detailed Application status (sync, health, lastSyncRevision)
      kubectl -n argocd get application <app-name> -o yaml
      argocd app get <app-name>
      argocd app history <app-name>
      
      # Argo CD configuration (the global config knobs)
      kubectl -n argocd get configmap argocd-cm -o yaml
      kubectl -n argocd get configmap argocd-rbac-cm -o yaml
      kubectl -n argocd get configmap argocd-cmd-params-cm -o yaml
      
      # RBAC effective policy
      argocd account list
      argocd account get-user-info <user>
      
      # Cluster registrations (every destination cluster has its own Secret)
      kubectl -n argocd get secrets -l argocd.argoproj.io/secret-type=cluster -o yaml
      
      # Sync windows on an AppProject
      kubectl -n argocd get appproject <project> -o jsonpath='{.spec.syncWindows}'
      
      # Argo CD Agent (hub-and-spoke deployments)
      kubectl -n argocd get agents -o yaml
      ```
      
      ## Argo CD install state to confirm before review
      
      - Argo CD version (`kubectl -n argocd get deploy argocd-server -o jsonpath='{.spec.template.spec.containers[0].image}'`) — sync impersonation, RBAC granular actions, and ApplicationSet RollingSync arrived in different versions.
      - `application.sync.impersonation.enabled` in `argocd-cm` — `false` (default) means every sync runs as the controller's ServiceAccount on every destination.
      - `application.sync.requireOverridePrivilegeForRevisionSync` in `argocd-cm` — `true` requires explicit override permission for ad-hoc revision syncs.
      - `webhook.maxPayloadSizeMB` in `argocd-cm` — large Helm value files may exceed the default.
      - Whether Argo CD Agent (argocd-agent) is in use for hub-and-spoke multi-cluster — different security model.
      - Whether Argo CD Autopilot manages Argo CD itself via GitOps — change review must include the Autopilot repo.
      
      ## Sanitization rules
      
      - Never request kubeconfig contents, cluster Secret contents, repository SSH keys, or webhook signing secrets in chat.
      - Replace identifiable cluster URLs and namespaces with placeholders unless the user provides them and confirms it is safe to use them.
      - Do not print Git repository tokens, OCI registry tokens, or Helm OCI credentials.
      
    • official-sources.md 5 KB
      # Official Sources
      
      Load these only when needed:
      
      - [Argo CD documentation home](https://argo-cd.readthedocs.io/en/stable/) — use as the entry point for any Argo CD authoring, install, or operator-side question.
      - [Declarative setup](https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/) — use for `Application`, `AppProject`, cluster Secret, repository Secret, and ConfigMap structure.
      - [argocd-cm reference](https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-cm-yaml/) — use for global controller knobs including `application.sync.impersonation.enabled`, `application.sync.requireOverridePrivilegeForRevisionSync`, and `webhook.maxPayloadSizeMB`.
      - [Auto-sync](https://argo-cd.readthedocs.io/en/stable/user-guide/auto_sync/) — use for `automated`, `prune`, `selfHeal` semantics and operational guidance.
      - [Sync Options](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/) — use for `Replace`, `Force`, `ServerSideApply`, `PruneLast`, `CreateNamespace`, `Validate=false`, `RespectIgnoreDifferences`.
      - [Sync Windows](https://argo-cd.readthedocs.io/en/stable/user-guide/sync_windows/) — use for deploy-freeze enforcement at the AppProject level.
      - [ApplicationSet Generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators/) — use for `list`, `cluster`, `git`, `matrix`, `merge`, `pullRequest`, `scmProvider` generator semantics.
      - [ApplicationSet Progressive Syncs (RollingSync)](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Progressive-Syncs/) — use for staged ApplicationSet rollouts.
      - [Argo CD RBAC](https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/) — use for `policy.csv` syntax, default role, group bindings, and granular action permissions.
      - [Sync impersonation proposal](https://argo-cd.readthedocs.io/en/stable/proposals/decouple-application-sync-user-using-impersonation/) — use for the AppProject `destinationServiceAccounts` field and the least-privilege sync identity model.
      - [Argo CD upgrading guide](https://argo-cd.readthedocs.io/en/stable/operator-manual/upgrading/) — use when version-specific RBAC actions or API fields matter.
      - [Argo CD User Management](https://argo-cd.readthedocs.io/en/stable/operator-manual/user-management/) — use for SSO via OIDC / SAML / Dex and group claims.
      - [Argo CD Webhook](https://argo-cd.readthedocs.io/en/stable/operator-manual/webhook/) — use for repository webhook setup and signature verification.
      - [Argo CD Agent](https://github.com/argoproj-labs/argocd-agent) — use for hub-and-spoke multi-cluster topologies replacing direct cluster registrations.
      - [Argo CD Autopilot](https://github.com/argoproj-labs/argocd-autopilot) — use when Argo CD itself is managed via GitOps.
      
      ## Grounded insights worth carrying into the skill
      
      - The Argo CD controller defaults to running as cluster-admin on every destination cluster. The `application.sync.impersonation.enabled` flag in `argocd-cm` is the switch that activates per-Application ServiceAccount impersonation via `destinationServiceAccounts` on the AppProject.
      - `AppProject` boundaries are the only enforced isolation between teams sharing one Argo CD instance. Wildcards in `sourceRepos`, `destinations`, `clusterResourceWhitelist`, or empty `namespaceResourceBlacklist` collapse the boundary.
      - `automated.selfHeal: true` combined with `automated.prune: true` means a Git revert (or Git outage that exposes a stale ref) deletes prod resources. There is no built-in confirmation step.
      - ApplicationSet's `cluster` generator with an empty selector auto-onboards every newly registered cluster. This is the most-cited blast-radius mode in Argo CD post-incident reviews.
      - ApplicationSet RollingSync intentionally forces auto-sync **disabled** on generated Applications (the controller logs warnings if any have auto-sync enabled). RollingSync drives sync via OutOfSync detection, not auto-sync.
      - The `Replace=true` sync option is destructive on `StatefulSet`, `Service`, `PersistentVolumeClaim`, and any resource with finalizers. Argo CD's default three-way merge (or server-side apply on newer versions) is safer.
      - Argo CD RBAC granular actions (e.g., `action/apps/Deployment/restart`, `action/argoproj.io/Rollout/abort`) shipped in v2.8+. Older policies that don't list these still work but won't grant the action — operators may discover gaps after upgrade.
      - The `requireOverridePrivilegeForRevisionSync: true` flag in `argocd-cm` requires explicit `override` permission to sync to a non-tracked revision (e.g., a branch instead of HEAD of the configured target). This blocks easy ad-hoc syncs that bypass Git review.
      - Argo CD Autopilot's bootstrap repo manages Argo CD itself — changes to that repo can disable RBAC, weaken AppProject scopes, or rotate the admin password. Treat the Autopilot repo as a tier-0 control surface.
      - The Argo CD Agent (argocd-agent) introduces a hub-and-spoke topology where the central Argo CD installation does not hold cluster credentials for spoke clusters; agents connect outbound. Different threat model from the classic direct-cluster registration.
      
    • workflow-and-output.md 9.3 KB
      # Workflow and Output Contract
      
      ## Workflow
      
      ### Step 1 — Identify the target and the surrounding AppProject
      
      1. Confirm the kind: `Application`, `AppProject`, `ApplicationSet`, or a global ConfigMap (`argocd-cm`, `argocd-rbac-cm`).
      2. For an `Application`, locate the `spec.project` reference and review the `AppProject` first — the AppProject defines the boundary the Application operates within.
      3. For an `AppProject`, list every `Application` referencing it (`kubectl -n argocd get applications -o jsonpath='{range .items[?(@.spec.project=="<project>")]}{.metadata.name}{"\n"}{end}'`).
      4. For an `ApplicationSet`, identify the generator type (`list`, `cluster`, `git`, `matrix`, `merge`, `pullRequest`, `scmProvider`) and the `spec.template`.
      
      ### Step 2 — Audit the AppProject blast radius
      
      The AppProject defines four boundary surfaces. Each is a potential blast-radius finding:
      
      1. **`sourceRepos`** — the Git or Helm repos this project may pull from. `['*']` means any repo. Recommended: explicit list.
      2. **`destinations`** — the (cluster, namespace) tuples this project may deploy to. `[{server: '*', namespace: '*'}]` means anywhere. Recommended: explicit cluster URLs and namespace allowlist (or `namespace: 'team-*'` for multi-tenant patterns).
      3. **`clusterResourceWhitelist`** — cluster-scoped resources this project may manage. Empty or `['*/*']` means any cluster-scoped resource (including ClusterRoleBindings, Namespaces). Recommended: empty for application projects; explicit list for platform projects.
      4. **`namespaceResourceBlacklist`** — namespace-scoped resources this project may NOT manage. Recommended: include `[{group: 'rbac.authorization.k8s.io', kind: '*'}]` for application projects to prevent applications from binding their own RBAC.
      
      Reference: [AppProject in declarative setup](https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/).
      
      ### Step 3 — Audit sync identity (the most under-reviewed control)
      
      Three sync identity modes exist; pick one and verify:
      
      1. **Controller default** — Argo CD controller's ServiceAccount on the destination cluster. Default is broad (cluster-admin in many installs). **Critical finding** if production Applications use this without an audit trail of what the controller can do.
      2. **Sync impersonation** (preferred for least privilege) — `application.sync.impersonation.enabled: true` in `argocd-cm` plus `destinationServiceAccounts` on the AppProject. Each Application syncs as a per-namespace ServiceAccount with scoped RBAC. See the [sync impersonation proposal](https://argo-cd.readthedocs.io/en/stable/proposals/decouple-application-sync-user-using-impersonation/).
      3. **Cluster credentials** (legacy multi-cluster) — Argo CD has its own bearer token for each registered cluster. Rotate regularly.
      
      Stress-tests:
      
      - An Application with `spec.destination.namespace: kube-system` plus controller-default identity = sync runs as cluster-admin in kube-system.
      - An AppProject with `destinationServiceAccounts` listing `defaultServiceAccount: 'default'` = effectively no impersonation; the default SA is always present.
      
      ### Step 4 — Audit the drift-handling posture
      
      `spec.syncPolicy.automated` controls whether Argo CD reconciles drift. Three flags govern blast radius:
      
      1. **`automated: {}` (auto-sync)** — every Git commit triggers a sync. Production-safe only with `syncWindows` and a tested CI gate.
      2. **`automated.prune: true`** — resources removed from Git are deleted from the cluster. **Critical** without a rollback runbook: a misconfigured commit deletes prod resources.
      3. **`automated.selfHeal: true`** — manual cluster changes are reverted on the next sync. Combined with `prune`, divergence becomes a hard reset to Git state.
      
      Stress-tests:
      
      - `automated.prune: true` on a `StatefulSet` Application = deletion cascades to PVCs (if `persistentVolumeClaimRetentionPolicy.whenDeleted: Delete`). Data loss path.
      - `automated.selfHeal: true` on an Application managing CRDs from a third-party operator = the operator's runtime status updates may be reverted as drift.
      - `automated` with no `syncWindow` covering deploy-freeze periods = a freeze window can be bypassed by a Git commit.
      
      Reference: [Auto-Sync](https://argo-cd.readthedocs.io/en/stable/user-guide/auto_sync/) and [Sync Windows](https://argo-cd.readthedocs.io/en/stable/user-guide/sync_windows/).
      
      ### Step 5 — Audit `syncOptions` for stateful or sensitive resources
      
      `spec.syncPolicy.syncOptions` overrides default sync behavior. Flag these as findings:
      
      - **`Replace=true`** — Argo CD deletes the resource and recreates it instead of patching. For `StatefulSet`, `PersistentVolume`, `PersistentVolumeClaim`, `Service` (ClusterIP rotation), `ConfigMap` consumed by hot-reload — this is data loss or downtime.
      - **`Force=true`** — passes `--force` to `kubectl apply`. Disables conflict detection.
      - **`ServerSideApply=false`** when Argo CD's default is server-side apply on newer versions — falls back to client-side three-way merge, which can re-introduce drift loops.
      - **`PruneLast=true`** missing on Applications that delete resources — pruning happens before resource creation, briefly leaving the namespace in an unhealthy state.
      - **`CreateNamespace=true`** with no namespace finalizer or RBAC scope — creates namespaces outside AppProject `destinations`.
      
      ### Step 6 — Audit `ApplicationSet` generators
      
      ApplicationSet generators expand into multiple Applications. Risk surface depends on generator type:
      
      - **`list` generator** — explicit list of clusters/parameters. Lowest risk.
      - **`cluster` generator** — generates an Application for every registered cluster matching a label selector. **Critical** when the selector is empty (`{}`) or matches all clusters — a new cluster automatically receives the workload before review.
      - **`git` generator** — generates an Application for every directory or file pattern in a Git repo. Risk: a malicious or accidental commit adds a new directory and triggers a new Application.
      - **`matrix` and `merge` generators** — combine other generators. Risk multiplies.
      - **`pullRequest` generator** — generates Applications for open PRs. Risk: any PR can trigger an ephemeral deployment with the PR's manifests.
      - **`scmProvider` generator** — generates Applications for every repo in an org. Risk: org-wide auto-onboarding.
      
      Reference: [ApplicationSet Generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators/) and [Progressive Syncs (RollingSync)](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Progressive-Syncs/).
      
      Stress-tests:
      
      - ApplicationSet with `cluster` generator + no selector + auto-sync = every cluster auto-onboarded in seconds.
      - ApplicationSet with `pullRequest` generator + no namespace isolation = PRs deploy to shared namespaces.
      - ApplicationSet with `goTemplate: true` and unsanitized template inputs = template injection if PR titles are templated into manifests.
      
      ### Step 7 — Audit `argocd-rbac-cm` policy
      
      The Argo CD RBAC ConfigMap (`argocd-rbac-cm`) defines who can do what in the Argo CD UI/CLI/API. Check:
      
      1. The default role (`policy.default`) — `role:readonly` is safe; `role:admin` is wrong.
      2. Specific actions on resources — newer Argo CD versions ship granular actions like `action/apps/Deployment/restart` or `action/argoproj.io/Rollout/abort`. Each granted action should map to a real on-call runbook.
      3. RBAC subject scopes — `g, <group>, role:admin` on broad SSO groups is a finding.
      
      Reference: [Argo CD RBAC](https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/).
      
      ### Step 8 — Multi-cluster (Argo CD Agent) topology
      
      If Argo CD Agent is in use:
      
      - The control plane stores `Application` specs; each spoke runs an agent that pulls assigned Applications.
      - Each agent has its own credentials and authentication path — verify rotation cadence.
      - Network path from spoke to hub must be authenticated and encrypted.
      
      Reference: [argocd-agent](https://github.com/argoproj-labs/argocd-agent).
      
      ## Output
      
      Return:
      
      - **target**: `Application`, `AppProject`, `ApplicationSet`, or RBAC ConfigMap, with the project boundary,
      - **evidence level**: `live evidence` / `documentation-based` / `sanitized user evidence` / `inference`,
      - **sync identity**: controller default vs impersonated SA vs cluster credential, with judgment on least privilege,
      - **blast radius**: `sourceRepos`, `destinations`, `clusterResourceWhitelist`, `namespaceResourceBlacklist` audit,
      - **drift posture**: `automated.prune`, `automated.selfHeal`, sync windows, syncOptions concerns,
      - **risk findings** (with severity: high / medium / low) — covering sync identity, blast radius, drift, ApplicationSet generators, RBAC,
      - **safest next actions** with sample manifest changes,
      - **rollback plan**: how to revert auto-sync, disable selfHeal, narrow AppProject scope without breaking running Applications,
      - **assumptions and missing facts**.
      
      ## Security notes
      
      - Never recommend `automated.prune: true` + `automated.selfHeal: true` on production Applications without a tested rollback runbook.
      - Never recommend `AppProject` with `sourceRepos: ['*']` and `destinations: ['*']` for application projects. Platform projects may need this; document the justification.
      - Never recommend disabling sync impersonation as a default in production after it has been enabled.
      - Never request or print Argo CD admin tokens, repo SSH keys, or destination cluster bearer tokens.
      
  • metadata.json 1.5 KB
    {
      "id": "argocd-gitops-review",
      "name": "Argo CD GitOps Review",
      "type": "skill",
      "provider": "argocd",
      "harnesses": [
        "codex",
        "claude-code",
        "cursor",
        "gemini",
        "kiro",
        "other"
      ],
      "summary": "Review Argo CD Application, AppProject, ApplicationSet, sync windows, RBAC, sync impersonation, and Argo CD Agent multi-cluster topologies for blast radius, drift handling, and least-privilege sync identity.",
      "source_type": "original",
      "official_docs": [
        "https://argo-cd.readthedocs.io/en/stable/",
        "https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/",
        "https://argo-cd.readthedocs.io/en/stable/user-guide/auto_sync/",
        "https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/",
        "https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/",
        "https://argo-cd.readthedocs.io/en/stable/proposals/decouple-application-sync-user-using-impersonation/",
        "https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-cm-yaml/"
      ],
      "security_notes": "Sync impersonation is disabled by default — controller runs as cluster-admin on every destination. AppProject sourceRepos and destinations wildcards remove blast-radius bounds. Automated prune+selfHeal on Git divergence is irreversible. ApplicationSet unbounded cluster generators auto-onboard misconfigured clusters.",
      "last_verified": "2026-05-01",
      "path": "skills/argocd/argocd-gitops-review",
      "author": "github: VincentChuWaiChow",
      "version": "0.1.0"
    }
    
  • SKILL.md 3.6 KB
    ---
    name: argocd-gitops-review
    description: Use this skill for Argo CD GitOps review across Application, AppProject, ApplicationSet, sync windows, RBAC, sync impersonation, and Argo CD Agent multi-cluster topologies. Trigger when the user asks whether an Argo CD configuration is safe for production, whether automated sync should be enabled, whether prune+selfHeal is appropriate, whether AppProject scope is too wide, or how to enforce least-privilege sync identity.
    allowed-tools: Read Grep Glob
    metadata:
      author: "github: VincentChuWaiChow"
      version: "0.1.0"
      updated: "2026-05-05"
      category: delivery
    ---
    
    # Argo CD GitOps Review
    
    ## Purpose
    
    Review Argo CD `Application`, `AppProject`, `ApplicationSet`, sync windows, RBAC, and the central `argocd-cm` / `argocd-rbac-cm` configuration against blast radius, drift handling, and least-privilege sync identity. Argo CD's controller defaults to cluster-admin permissions on every destination cluster — the security posture lives in `AppProject` boundaries, sync impersonation, and explicit RBAC, not in the controller defaults.
    
    ## Lean operating rules
    
    - Prefer live cluster evidence (`kubectl get applications,appprojects,applicationsets -n argocd -o yaml` plus the `argocd-cm` and `argocd-rbac-cm` ConfigMaps) when the active client exposes it; otherwise fall back to official Argo CD documentation and sanitized YAML from the user.
    - Separate confirmed facts from inference. If sync history, current health, or RBAC binding state was not queried, say so.
    - Treat `application.sync.impersonation.enabled: false` (default) in production as a critical finding — every sync runs as the controller's cluster-admin ServiceAccount.
    - Treat `AppProject` with `sourceRepos: ['*']` and `destinations: ['*']` as a wide-blast-radius finding — any commit in any repo can deploy anywhere.
    - Treat `automated.prune: true` + `automated.selfHeal: true` on production Applications as critical without an explicit allowlist of authorized Git refs and a tested rollback runbook — Git divergence becomes irreversible deletion.
    - Challenge `ApplicationSet` generators that include unbounded clusters (`clusters: {}`) or label selectors with no exclusion — one mis-labeled cluster joins the rollout.
    - Challenge `syncOptions: ['Replace=true']` and `syncOptions: ['ServerSideApply=false']` on stateful resources — Replace deletes-then-creates, breaking PVC bindings.
    - Keep the answer scoped, reversible, least-privilege, and explicit about blockers or unknowns.
    
    ## References
    
    Load these only when needed:
    
    - [Evidence path and tooling](references/mcp-and-evidence.md) — use when choosing live cluster evidence, confirming Argo CD install state and version, or switching to documentation mode.
    - [Workflow and output contract](references/workflow-and-output.md) — use when executing the full review, applying stress checks on Application / AppProject / ApplicationSet, or formatting the final answer.
    - [Official sources](references/official-sources.md) — use when you need the detailed Argo CD documentation list, RBAC syntax, and grounded insights from the project.
    
    ## Response minimum
    
    Return, at minimum:
    
    - the scoped target (`Application`, `AppProject`, `ApplicationSet`, or `argocd-rbac-cm` policy) and evidence level,
    - the sync identity (controller default cluster-admin, impersonated ServiceAccount, or `destinationServiceAccount`),
    - the blast radius assessment (`sourceRepos`, `destinations`, `clusterResourceWhitelist`, `namespaceResourceBlacklist`),
    - the drift handling posture (`automated`, `prune`, `selfHeal`, `syncWindows`),
    - the safest next actions and rollback plan,
    - the assumptions or blockers that prevent stronger conclusions.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related