Skip to content
Latchkey

Argo CD "ComparisonError: rpc error: code = Unknown" in CI

Argo CD calls the repo-server to render your manifests and compare them against the live cluster. When that call fails, the Application status shows ComparisonError and a wrapped rpc error: code = Unknown that carries the real failure text from manifest generation.

What this error means

The Application never reaches Synced or OutOfSync; its condition shows "ComparisonError" and argocd app get prints an "rpc error: code = Unknown desc = ..." line describing a template, kustomize, or plugin failure.

argocd
ComparisonError: rpc error: code = Unknown desc = Manifest generation error (cached):
kustomize build <path> failed exit status 1: Error: accumulating resources:
accumulation err='accumulating resources from 'deploy.yaml': evalsymlink failure'

Common causes

Manifest generation itself failed

The wrapped desc = ... almost always contains a kustomize, helm, or config management plugin error. The rpc Unknown is just the transport wrapper; the real cause is the inner message.

A cached error persists after the fix

Argo CD caches manifest generation results. "(cached)" in the message means the repo-server is replaying a prior failure and a fresh comparison has not run yet.

How to fix it

Read the wrapped desc and fix the generator

  1. Run argocd app get <app> and read the text after desc =.
  2. Reproduce that generator locally (for example kustomize build <path> or helm template).
  3. Fix the manifest error, push, then hard-refresh so the cache clears.
Terminal
argocd app get my-app
argocd app get my-app --hard-refresh

Force a hard refresh from the pipeline

A hard refresh discards the cached generation result so the corrected manifests are re-rendered before you evaluate sync status.

.github/workflows/deploy.yml
- run: argocd app get my-app --hard-refresh --output json

How to prevent it

  • Render manifests locally (kustomize build / helm template) in CI before Argo CD sees them.
  • Treat the inner desc, not the rpc wrapper, as the actionable error.
  • Hard-refresh the app after pushing a manifest fix so cached errors clear.

Frequently asked questions

What causes ""ComparisonError ... rpc error: code = Unknown""?
The wrapped desc = ... almost always contains a kustomize, helm, or config management plugin error. The rpc Unknown is just the transport wrapper; the real cause is the inner message.
How do I fix "ComparisonError ... rpc error: code = Unknown"?
Read the wrapped desc and fix the generator

Related guides

References

Run this faster and cheaper on Latchkey managed runners - self-healing included. Start free → 30-day trial · No credit card