Provenance
Your vault is your second brain. When you read a meeting summary, a wiki entry, or a task six months from now, you need to know at a glance: did you write this, or did a model draft it? Provenance is how Pensum keeps that answer always visible — in the file itself, in the views, and in the data your agents see.
This page explains how provenance works, why it’s structured the way it is, and what guarantees you have.
The principle
Section titled “The principle”AI augments your thinking; it doesn’t replace it. Every piece of AI output in Pensum is marked in two ways:
- Structurally in the file — a standard Obsidian callout with a header line that names the model and the date
- In the index — a provenance field that views and agents can filter on
The structural marking survives anywhere markdown survives: any reader, any sync, any export. The index marking lets views apply visual treatments and lets agents query “only user-authored content.”
The provenance values
Section titled “The provenance values”Every entity Pensum tracks (tasks, wiki entries, meeting content) carries one of these values:
| Value | Meaning |
|---|---|
user-authored | You created this. Either typed directly, or captured via local parsing (Quick Add without AI). Smart Capture parses are also user-authored — it’s a parser, not an author. |
ai-suggested-pending | An AI feature drafted this and it hasn’t been reviewed yet. Currently used for in-flight states. |
ai-suggested-accepted | An AI feature drafted this, you accepted it as-is. E.g. you ran Summarize and left the summary callout untouched. |
ai-suggested-edited | An AI feature drafted this, you modified it. E.g. you ran Summarize and edited the wording. |
agent-suggested-pending | An AI agent (via MCP) created this. It’s waiting in the Agent Captures view for your review. |
agent-suggested-accepted | Agent-created, you accepted it without changes. |
agent-suggested-edited | Agent-created, you modified it. |
The distinction between AI-suggested and agent-suggested matters: AI-suggested content came from an AI feature you triggered (you clicked Summarize, you toggled Smart Capture). Agent-suggested content came from an AI agent acting on its own (via MCP, perhaps in response to a different user’s request, perhaps as part of an automated workflow). The accountability is different, and Pensum surfaces both separately.
Structural marking
Section titled “Structural marking”AI-generated content in your vault is wrapped in Obsidian callouts with the ai-generated type:
> [!ai-generated] Summary by claude-sonnet-4-6, 2026-05-16>> The team reviewed Q3 pricing changes. Key decision: move to a three-tier> SMB structure effective Aug 1.>> **Decisions**> - Three-tier SMB pricing> - Grandfather existing customers for 12 monthsWhat the callout gives you:
- Header line — names the model and the date. So even years from now, you know which model produced what.
- Visually distinct in Obsidian’s renderer — callouts get a different background, border, and icon.
- Survives outside Obsidian — any markdown reader renders the callout as a styled blockquote at minimum. The structural intent isn’t lost.
- Searchable — the callout text is part of the note, so full-text search finds it.
- Editable — you can rewrite the contents freely. The callout markers stay around the edited text, keeping the provenance visible.
Where AI content shows up as callouts
Section titled “Where AI content shows up as callouts”| Feature | What’s in the callout |
|---|---|
| Summarization | Overview / Key topics / Decisions / Open questions |
| Stub Expansion | A first-pass explanation of the wiki stub’s title |
| (Future: pre-meeting prep, generated project templates) | TBD |
Features that produce tasks don’t use callouts — extracted tasks are real tasks with a provenance flag in the index. The blockquote that holds the source transcript quote next to each extracted task is for traceability, not provenance signalling.
Visual treatment in views
Section titled “Visual treatment in views”In Pensum’s views, the AI provenance flag drives a visual accent on AI-generated entities:
| Setting | Treatment |
|---|---|
| Subtle (default) | A faint accent color and a small AI icon. Visible but not noisy. |
| Prominent | A clearer border or background tint. Hard to miss. |
| None | No visual treatment. Use this if you’ve decided you don’t need the cue. |
Configure under Settings → General → AI content treatment.
The visual treatment is at the view layer — it doesn’t change anything in your markdown files. Reading the same task in Obsidian’s editor vs. in a Pensum view will look slightly different.
The conservative defaults
Section titled “The conservative defaults”- User-initiated. No AI feature in Pensum runs without you pressing a button. There’s no background AI processing, no auto-summarize-on-meeting-end, no auto-triage on capture.
- Draft-first. AI output is always a draft until you explicitly accept it. Summaries flip
ai_summary_statustodraft, notaccepted. Stub expansions land atstatus: drafted, notdeveloped. Agent captures sit in the review queue. - Reviewable. You can see what was sent to the model — the AI activity log in the Activity view captures every call with its feature, mode, model, status, and tokens used.
- Reversible. Every AI-generated piece is just text in your markdown. Edit it. Delete it. Replace it. There’s no “AI lock” on anything.
What this gives you
Section titled “What this gives you”A few months from now you’ll re-read a meeting note and want to know whether the “decisions” list reflects what was actually decided or what the AI thought was decided. The callout tells you. The model name on the callout tells you which model thought so. The date tells you when. Your subsequent edits flip provenance to edited, telling future-you that you reviewed and refined it.
A year from now you’ll search your vault for “Q3 pricing” and the AI-generated summary callouts will show up alongside your own meeting notes. The visual treatment in views will make it obvious which is which. If you ever want to filter them out — say, when running a query that should only consider user-authored content — the provenance flag makes that one parameter.
Five years from now (if you’ve kept this vault), the model that generated some callout might no longer exist, but the callout still says it was generated by that model on that date. You can decide what to do with that information.
This is the contract: you will always be able to tell what you wrote vs. what was drafted, in your file, in your views, and in your queries. If something in Pensum ever breaks that contract, it’s a bug.
How agents see provenance
Section titled “How agents see provenance”The MCP server exposes provenance on every entity it returns. Agents (Claude Desktop, Claude Code, Cursor, scripted automation) can filter on it:
{ "tool": "task_today", "arguments": { "provenance": ["user-authored", "ai-suggested-accepted"] }}The agent can choose to exclude pending agent-suggested content (don’t act on tasks awaiting your review), exclude AI-edited content (don’t process anything you’ve touched), or whatever combination its workflow needs.
See MCP server for the full tool list and provenance parameters.
How the CLI sees provenance
Section titled “How the CLI sees provenance”pensum task show <id> --json returns the full entity including provenance. List commands include provenance per row. Agents using the CLI can filter via --provenance=user-authored or work with the full set including AI content.
See CLI commands for the flag set.
Provenance vs. visual treatment
Section titled “Provenance vs. visual treatment”These are independent settings. You can have provenance fully tracked (always on) but visual treatment set to “None” if you’d rather not see the cue in views. The index keeps the data; the view layer chooses what to do with it.
This is useful when you’ve adopted AI features so thoroughly that the visual cue stops being informative, but you still want the data preserved for agent filtering or future review.
What’s NOT marked
Section titled “What’s NOT marked”- Quick Add tasks parsed via Smart Capture are marked
user-authored. Smart Capture is a parser. The task is your task; the parser just understood the syntax better. - Local NL parser output is
user-authoredfor the same reason. - Tasks you completed via AI agents are flipped to completed but their original provenance is preserved.
The line is: did the AI author the content (summary text, wiki draft, action-item description), or did it assist with structure (parsing, organising)? Authoring gets the callout + AI provenance. Assisting doesn’t.