Answer
RBAC policy lives in the argocd-rbac-cm ConfigMap, with keys policy.csv (the rules), policy.default (fallback role), and scopes (which token claims to use for group mapping). Changes take effect without restart. Managing it declaratively (in Git) keeps access control itself under GitOps.
data:
policy.default: role:readonly
policy.csv: |
g, my-team, role:adminReal-world example Access control changes go through a PR to the argocd-rbac-cm manifest, so permissions are reviewed and versioned.