Collections in Kodori (matters, projects, drawers, folders, custom) can carry **default sensitivity** and **default retention class** values that automatically apply to every document filed there. This is how iManage, NetDocuments, and FileHold operators have always handled matter-level governance — Kodori ships it directly.
**Setting the defaults** (tenant owner / admin only). Use the agent: *"Set the Acme Corp matter to confidential and 7-year retention."* The agent calls `setCollectionInheritance` and the collection record updates atomically. The change emits a `collection.inheritance-set` audit event so the timeline shows when the matter's defaults changed and by whom.
**How sensitivity inheritance works** — **highest-tier-wins**. When a doc is added to a collection (single-add, bulk-add, or any other path that creates a `collection_members` row), the inheritance helper checks the doc's current sensitivity against the collection's default:
- If the doc is at a **strictly lower** tier (e.g. internal moving into a confidential matter), it is escalated to the matter's default. An audit event captures the before / after with reason `collection-inheritance:add`. - If the doc is **already at or above** the default (e.g. a regulated doc dropped into a confidential matter), nothing changes. We never demote — once a doc has been classified at a high tier, dropping it into a less-strict collection doesn't unwind that.
**How retention inheritance works** — **no-override**. When a doc is added, the helper applies the default retention class **only if the doc has no retention class yet**. Once a doc carries any retention class (even a different one), the inheritance helper leaves it alone. Disposal cost compounds — a doc with a 7-year retention shouldn't silently shorten because it was filed into a 3-year matter.
**Backfilling existing members.** Setting inheritance on a collection only affects documents added *after* the change. To apply the defaults to docs already in the collection, ask the agent: *"Apply the Acme Corp matter's inheritance to the docs already in there."* The agent calls `applyCollectionInheritance` which pages through the collection's members and applies inheritance idempotently — re-running is safe and produces zero changes once everything matches.
**Bulk-apply retention from the UI** (added 2026-05-12, D333). The collection page itself (`/collections/[id]`) carries an admin-only "Apply retention class to this collection" form. Pick a class, optionally check a few content types to narrow the scope (e.g. only the PDFs in a matter), hit Apply. Unlike the inheritance helper above — which respects the no-override rule for retention — this UI explicitly **overrides** existing per-doc retention because it's the affordance for "I want to standardize this whole collection on one class right now." Each affected doc emits its own audit event (one per doc, hash-chained as usual), legal-held docs are unaffected, and every override is reversible from the doc's history. The result banner shows applied/scanned counts so a narrowing MIME filter is visible at a glance ("applied to 42 of 318 scanned" tells you the filter matched the way you expected).
**Rule-matched docs.** Collections with rule-driven membership (e.g. "every doc in matter X with docType=contract") evaluate their rule at query time, so docs that match the rule but aren't explicitly pinned aren't covered by default inheritance. To cover them, ask: *"Apply the matter's inheritance, including rule-matched docs."* The agent passes `includeRuleMatched=true` and the backfill walks the UNION of pinned + rule-matched docs.
**What about retention auto-apply rules?** Rules in /retention/rules ("invoices → 7 years") fire on new ingests automatically. To apply a rule retroactively to existing docs whose doc-type already matches, ask: *"Apply the invoice retention rule to existing invoice docs — preview first."* The agent calls `applyRetentionRuleToMatchingDocs` with `dryRun=true`, returns the count of would-be proposals, and on confirmation re-runs with `dryRun=false`. Each match becomes a metadata suggestion in the doc's review queue (the same shape auto-classify produces on first ingest); humans accept individually, mirroring Kodori's "agent proposes, human confirms" governance posture for retention.
**Why no lowest-wins or strict-equality modes?** Both would silently DEMOTE sensitivity. A regulated PII doc dropped into a confidential matter would lose its label — every incumbent DMS that ships highest-tier-wins-only does so for the same reason. We'd add these modes only if a customer's contract demanded them, with explicit acknowledgement and held-doc deny-wins safety wrappers.
**Audit trail.** Every inheritance application emits one `document.sensitivity-changed` (with reason `collection-inheritance:add` / `...:bulk-add` / `...:backfill` / `...:backfill-rule-matched` / `...:set-and-apply`) or `document.retention-class-changed` event per affected doc. The audit log shows exactly which collection drove which change and why.