## TL;DR
Agents quote outdated articles because the retrieval index serves a cached copy and nobody checks the version at quote time. Pin every citation to a version, check freshness against the live article before the reply sends, and set staleness TTLs so cached copies expire. A citation is a claim about the current docs; verify it like one.

## The query

```text
support agent quoting outdated kb version: freshness check
```

## Use this when

- Replies cite superseded KB articles
- Customers follow outdated instructions
- You are designing KB freshness guardrails
- Auditing citation accuracy

## Not for

- Writing KB articles
- Designing version control for docs
- Tuning search relevance
- Translation workflows

## Steps

### 1. Pin citations to article versions, not just articles

Every citation carries the article id plus the version retrieved. "Article 42" is ambiguous; "article 42, version 7" is checkable. Version pinning makes staleness detectable.

Expected output: versioned citations on every agent reply.

### 2. Check freshness against the live article pre-send

Before the reply sends, compare the cited version against the live version. If the article updated since retrieval, refresh the excerpt or flag the reply for review. The check is cheap; the outdated instruction is expensive.

Expected output: pre-send freshness verification.

### 3. Set staleness TTLs on the retrieval cache

Cached article copies expire after a TTL matched to how fast the docs change. Fast-moving docs get short TTLs. A cache without a TTL is a staleness generator.

Expected output: TTLs set per content volatility.

### 4. Surface "updated since" warnings to the agent

When the agent drafts from a cached copy and the live article is newer, show a warning with the diff summary. Let the agent decide: refresh the quote or proceed deliberately. Informed beats silent.

Expected output: visible staleness warnings in the drafting flow.

### 5. Track outdated-citation rate

Sample sent replies and check cited versions against live. A rising rate means TTLs are too long or the freshness check is bypassed. Tune from the metric.

Expected output: an outdated-citation metric tracked over time.

## Template: the checklist

```text
KB freshness:
[ ] Citations pinned to article versions
[ ] Pre-send freshness check against the live article
[ ] Retrieval cache TTLs matched to doc volatility
[ ] "Updated since" warnings with diff summaries
[ ] Outdated-citation rate tracked
```

## Variant phrasings

### agent cited old kb article

Steps 1 and 2. Version the citation, check before send.

### kb cache staleness support

Steps 3 and 4. TTLs plus agent warnings.

### quoting superseded documentation

Full sequence as the freshness program.

## Why it happens

Docs change and caches do not, and retrieval sits behind a cache for performance. The agent quotes what retrieval returned, which was true when cached. Every layer between the live docs and the reply is a staleness opportunity; only a check at the last layer (pre-send) closes them all.

## Edge cases

- Rapidly changing docs (release notes, status pages): bypass the cache entirely for these; always read live.
- Archived articles: the live version may be "archived." Treat archived as a failed freshness check, not as current.
- Multi-locale articles: versions differ per locale. Check freshness in the reply's locale.
- The agent deliberately quoting history: "as of version 5" is legitimate. Allow explicit historical citations with the version stated.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_ayVmlSqNfS1dZra5c5ng2Q
