Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for Vouch by vouchdev

Pod holds 19 of 60 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to Vouch by vouchdev.

Most discussed

feat(adapters): codex integration — bring the codex adapter to claude-code parity (tracking)

tracking issue for bringing the codex adapter to parity with claude-code. today adapters/codex/ is T1-only (a plain-copied config.toml that the installer silently skips whenever the project already has one), while claude-code ships four tiers: mcp wire, instructions snippet, slash commands, and capture hooks. roadmap 0.2 lists codex among the runtimes that get first-class adapter templates.

each piece is filed as its own small ticket and is independently shippable:

  • #384 — toml_merge

Read the thread · 2026-07-06 · closed · 3 comments

epic: make vouch friendlier and more useful out of the box

Motivation

vouch is solid as a primitive, but it has rough edges when someone — human or agent — first picks it up. This epic tracks four parallel workstreams to lower friction. Each track can graduate into its own issue/PR.


Track 1 — First-run / onboarding UX

  • vouch init writes a starter config.yaml, seeds an example source + claim, and prints "next steps"
  • vouch doctor outputs suggested fixes, not just findings (e.g. run \vouch index` to rebuild`)
  • A

Read the thread · 2026-05-21 · closed · 2 comments

fix(list): kb.list_pages / vouch pages include archived pages

What happened

kb.list_pages (MCP), kb.list_pages (JSONL), and vouch pages all pass store.list_pages() through filter_pages with no PageStatus.ARCHIVED filter. Archived pages remain in the agent-facing live listing. MCP/CLI payloads also omit status, so an archived page is indistinguishable from a live one.

This is the same live-set leak class as wiki/neighbors/compile/session-split (#695–#713), on the listing surface those fixes did not cover.

Expected

Listing surfaces ex

Read the thread · 2026-07-31 · closed · outside contributor · 1 comment

critical: Agent transport allows cross-agent approval

Summary

The review-gate docs say agents do not have an approve tool, but the JSONL/MCP tool surface exposes kb.approve to agents. The self-approval guard blocks the same VOUCH_AGENT, but a second agent identity can approve another agent’s proposal through vouch serve --transport jsonl, landing durable claims without any human CLI review.

Reproduction Steps

  1. Initialize a KB and add a source.
  2. Propose a claim through JSONL as VOUCH_AGENT=alice.
  3. Try approving as alice to co

Read the thread · 2026-06-05 · closed · outside contributor · 1 comment

[Bug] Bundle import can overwrite the audit log

Summary

vouch import-apply --on-conflict overwrite accepts a bundle containing audit.log.jsonl and overwrites the KB’s append-only audit log. The bundle format documents safety flags for “no proposed/, no state.db, no audit.log”, but import does not enforce those flags or block forbidden paths.

Reproduction Steps

  1. Create a fresh KB:
    tmp=$(mktemp -d)
    cd "$tmp"
    vouch init
    
  2. Create a bundle whose manifest includes audit.log.jsonl.
  3. Run:
    v
    

Read the thread · 2026-06-05 · closed · outside contributor · 1 comment

expose health.fsck() as kb.fsck on MCP/JSONL/capabilities (roadmap 1.5)

What you're trying to do

ROADMAP.md's 1.5 milestone: "vouch fsck — deeper consistency checks than doctor." That check already exists (health.fsck(), wired as the vouch fsck CLI command) — but it's the one diagnostic sweep with no agent-facing path: no MCP tool, no JSONL handler, not in capabilities.METHODS. An agent can call kb.lint and kb.doctor but has no way to run the deepest check (kb.fsck's own checks: orphaned embeddings, dangling supersede/contradict chains, decided-p

Read the thread · 2026-07-31 · open · outside contributor · 0 comments

kb.neighbors leaks edges pointing to excluded (superseded/archived/redacted/missing) nodes

What happened

find_neighbors() in src/vouch/graph.py records an edge into the response before checking whether the edge's other endpoint passes the same retrievability/existence gate that decides node inclusion:

# src/vouch/graph.py (before fix)
for edge in _edges_from_node(store, current, rel_types=rel_filter):
    other = edge.target if edge.source == current else edge.source
    ekey = (edge.source, edge.target, edge.relation)
    if ekey not in seen_edges:
        seen_edg

[Read the thread](https://github.com/vouchdev/vouch/issues/716) · 2026-07-31 · closed · outside contributor · 0 comments

### security: kb.detect_themes leaks claim and session ids the viewer cannot retrieve

## what

`themes.detect_themes` scans `store.list_claims()` and filters on status
(`archived` / `superseded` / `redacted`) and `approved_by`, but never on
`ArtifactScope`. Every other read surface — `kb.search`, `kb.context`,
`kb.recall`, the salience sidebar, `kb.explain_ranking` — passes its claims
through `scoping.is_visible` first. themes does not.

A `ThemeCluster` carries `claim_ids` and `session_ids`, so an unfiltered scan
hands a caller the ids of private or cross-project claims it canno

[Read the thread](https://github.com/vouchdev/vouch/issues/657) · 2026-07-30 · closed · outside contributor · 0 comments

## Most recent

### feat(import): note-vault importers — obsidian, joplin, notes, keep, markdown folders

## What you're trying to do

people arrive with years of notes already written — obsidian vaults, joplin
archives, apple notes and google keep exports, plain markdown folders — and
vouch has nothing to say to them. a fresh KB starts empty and stays empty until
someone does enough work in it.

ditto imports all of the above plus chatgpt / claude / gemini / perplexity
exports (heyditto.ai/docs/importing-your-memory), deduping on stable source ids
so re-importing the same export is safe, up to 200 

[Read the thread](https://github.com/vouchdev/vouch/issues/612) · 2026-07-30 · open · 0 comments

### feat(trust): scoped tokens — kb:read / kb:propose / kb:approve on a credential

## What you're trying to do

a bearer token today is all-or-nothing: hold it and you can call all ~70 `kb.*`
methods, including `kb.approve`. that is fine for a solo human and wrong for
anything else — a CI job that should only read, a triage bot that should only
propose, an agent that should never approve its own work.

ditto's permission grammar (heyditto.ai/docs/app-permissions) is
`memories:<action>:<target>` over five actions (read, create, update, delete,
archive) and two targets, with a c

[Read the thread](https://github.com/vouchdev/vouch/issues/608) · 2026-07-30 · open · 0 comments

### feat(cli): agent registry — list, pause, resume, revoke, and per-agent audit replay

## What you're trying to do

there is no way to answer "which agents can write to this KB, and what did each
one actually do?" bearer tokens are matched in `trust.py` and hashed into an
`auth_subject`, but nothing enumerates them, nothing can suspend one, and
nothing maps a subject back to a readable name.

ditto ships this as a settings screen (heyditto.ai/docs/agent-accounts): every
agent row shows name, status (active / paused / revoked), a read-only badge,
claim date and last-used timestamp,

[Read the thread](https://github.com/vouchdev/vouch/issues/607) · 2026-07-30 · closed · 0 comments

### feat(cli): agent-native provisioning — vouch init --agent plus a claim handshake

## What you're trying to do

an agent that wants durable memory today has to be handed a KB by a human first.
ditto inverts this (heyditto.ai/docs/agent-native-signup): the agent runs one
command, provisions its own identity, keeps the credential locally — it is never
printed or pasted into a chat — and hands its human a *claim link*. the human
opens it, signs in, confirms, and now owns the account. the agent keeps working
with the same key and the same memories; nothing resets.

that flow is wh

[Read the thread](https://github.com/vouchdev/vouch/issues/606) · 2026-07-30 · open · 0 comments

### feat(adapters): UserPromptSubmit hook — inject approved knowledge before the model answers

the claude-code adapter wires two hook events today — `SessionStart` (a once-per-session status + recall digest) and `PostToolUse` (passive capture) — in `adapters/claude-code/.claude/settings.json`. there is no per-turn injection point. that means approved knowledge relevant to *this* prompt only reaches the model if the agent remembers to call `kb.context` / `kb.search` itself. an operator who just told the agent a fact, or asked a question the kb already answers, gets nothing back unless the 

[Read the thread](https://github.com/vouchdev/vouch/issues/425) · 2026-07-07 · closed · 0 comments

### docs(adapters): codex adapter docs reflect the tiered install

once the codex tier work lands, three doc surfaces go stale:

- `adapters/README.md` — the table still describes codex as "`config.toml` snippet": one file, one tier.
- `adapters/codex/README.md` — documents only the manual `~/.codex/config.toml` edit. it should lead with `vouch install-mcp codex`, explain the project-local `.codex/config.toml` choice, describe what each tier adds (mcp wire / AGENTS.md snippet / prompts / capture), and keep the manual edit as the fallback path.
- `docs/getting-s

[Read the thread](https://github.com/vouchdev/vouch/issues/390) · 2026-07-06 · closed · 0 comments

### test(adapters): live codex install gate — real-cli verification that skips when codex is absent

`tests/test_openclaw_plugin_load_real.py` set the pattern: a live gate that exercises the real host cli when it's on PATH and skips (not fails) where it isn't, e.g. github ci. the codex adapter has no equivalent, so regressions in the shipped config only surface when a user hits them — the current T1 silent-skip behavior (installer no-op when `.codex/config.toml` exists) is exactly the class of bug a live gate would have caught.

## proposed change

- `tests/test_codex_adapter_load_real.py`: wit

[Read the thread](https://github.com/vouchdev/vouch/issues/389) · 2026-07-06 · closed · 0 comments

### feat(adapters): codex T4 — notify hook wiring for automatic session capture

follows #387: with `vouch capture ingest-codex` available, codex can self-capture the way claude-code T4 does, using the one lifecycle hook codex offers — the `notify` setting in `config.toml`, which runs an external program with a json payload on events like `agent-turn-complete`.

## proposed change

- extend `adapters/codex/config.toml` with a `notify` entry that invokes the ingest path (thin wrapper: read the payload, call `vouch capture ingest-codex` for the session in question). the wrappe

[Read the thread](https://github.com/vouchdev/vouch/issues/388) · 2026-07-06 · closed · 0 comments

### feat(adapters): codex T3 — custom prompts mirroring the vouch slash commands

claude-code T3 ships nine slash commands (`/vouch-recall`, `/vouch-status`, `/vouch-resolve-issue`, `/vouch-propose-from-pr`, plus the company-brain set — see `adapters/claude-code/install.yaml`). codex has an equivalent surface: custom prompts — markdown files codex exposes as slash commands. codex users currently get none of them, so the guided flows (recall before answering, distill a merged pr into proposals) are claude-code-only.

## proposed change

- mirror the claude-code command set as 

[Read the thread](https://github.com/vouchdev/vouch/issues/386) · 2026-07-06 · closed · 0 comments

### feat(adapters): toml_merge install strategy — codex T1 must merge into an existing .codex/config.toml

`vouch install-mcp codex` ships one file: `adapters/codex/config.toml` -> `<project>/.codex/config.toml` (project-local per the #179 scope decision). the installer's plain-copy path in `src/vouch/install_adapter.py` silently skips any destination that already exists:

```python
if dst.exists():
    result.skipped.append(entry.dst)
    continue

.codex/config.toml is codex's primary config file — model, approval policy, and any other mcp servers all live there. so on any project where cod

Read the thread · 2026-07-06 · closed · 0 comments

docs: INSTALL_FOR_AGENTS.md — machine-readable agent-driven install protocol

docs/getting-started.md is written for a human operator: it interleaves prose, "in ten minutes you'll have…", and steps that assume a person is reading, deciding, and typing. an assistant dropped into a fresh repo has no equivalent — it has to reverse-engineer the flow from the readme and llms.txt, guess at verb names, and risk trying to write approved artifacts directly. a short, deterministic, agent-followable doc — docs/INSTALL_FOR_AGENTS.md — that an assistant reads top-to-bottom and e

Read the thread · 2026-07-01 · closed · 0 comments

The remaining reports are on the project's issue tracker.