Logical decoding for agent audits

Logical decoding turns a database's write-ahead log into a stream of committed row changes. Used to audit an AI agent, it answers a question the agent can't: which rows did Postgres actually commit for this action? Triggers and cascades show up, because they changed rows in the same transaction.

An example

deedglass actions show <id> --diff (a real run of the demo)text
expected   UPDATE 1 row in public.orders where id = 42 · sets status
observed   UPDATE 301 rows in public.orders · 300 outside id = 42

public.orders    id    status
✓ expected       42    paid → shipped
✕ unexpected     218   pending → shipped

How Deedglass uses it

Deedglass's check reads the change log through a replication slot, matches each committed change to the action that caused it, and reports Matches or Doesn't match. That is how a one-row UPDATE that a legacy trigger turned into 301 rows gets caught.

Related terms

Read the docs