Does conda's local repodata TTL let `conda search` miss newly published packages?
0 reputation · 08 Feb 2026, 11:46 UTC
Conda stores per-channel repodata and a parsed index under the package cache directory, so both conda search and the solver may read a local snapshot rather than the live channel. The local_repodata_ttl setting defines how long that snapshot is considered fresh; entries younger than the TTL are reused instead of refetched. The documented way to force a refresh is deleting the index cache, but the precise revalidation contract varies by conda version and channel configuration.
Because defaults for compression, index caching, and the solver have shifted across releases—and Anaconda's bundled conda can differ from conda-forge builds—the exact stale window is not universal. It remains unclear whether conda performs HTTP validator revalidation inside the TTL window or strictly trusts local age, which affects whether a package published minutes ago can be absent from search results until the cache ages out or is cleaned.
Which conda versions enforce the TTL without guaranteed ETag or Last-Modified revalidation, and does that mean conda search can omit a package that already exists upstream? When is it appropriate to shorten local_repodata_ttl versus cleaning the index cache for a one-off query? How should the active TTL and cache location be verified for a specific installation before treating a missing version as authoritative?