# ZopNight's Audit Trail Logs Assistant Reads for Compliance

> An AI assistant connected to your infrastructure through MCP reads far more than it writes. It checks a resource's state, looks up a cost figure, or lists a team's permissions many times over for…

Source: https://zop.dev/resources/blogs/mcp-audit-logs-ai-assistant-reads
Published: 2026-08-12 · Author: riya-mittal · Tags: cloudgovernance, compliance, devops

---

An [AI assistant](https://zop.dev/resources/blogs/read-only-mcp-servers-cloud-infrastructure-ai) connected to your infrastructure through [MCP](https://github.com/modelcontextprotocol/modelcontextprotocol) reads far more than it writes. It checks a resource's state, looks up a cost figure, or lists a team's permissions many times over for every change it actually proposes. An audit log that records only mutations captures the rare write and misses the entire investigation that led up to it, which means most of what the assistant actually did was invisible to anyone running a [compliance review](https://zop.dev/resources/blogs/soc-2-compliance-on-cloud-infrastructure-a-technical-checklist-for-engineering-teams).

ZopNight's [audit trail](https://zop.dev/resources/blogs/autonomous-action-log-auditing-zopnight-decisions-production) now logs those reads too. Every lookup an AI assistant makes over MCP shows up as a clearly labeled "Read..." entry, next to the actions that changed something.

## Reads Show Up as Labeled Entries, With a Filter to Manage the Noise

A read entry and a mutation entry now sit in the same log, but they're not treated as the same kind of event. A new source filter lets you narrow the view to all sources, MCP activity specifically, or platform activity specifically. That keeps a read-heavy assistant session from burying the mutations you actually care about reviewing. Identical repeated lookups collapse into a single line instead of repeating the same entry dozens of times, which is exactly the pattern an assistant produces when it re-checks the same resource across several steps of one task.

| Entry type | What it represents | How it's grouped |
|---|---|---|
| Mutation | An action that changed something | Shown individually, as before |
| Read (new) | A lookup that changed nothing | Labeled "Read...", repeated identical lookups collapsed into one line |

The release notes say this plainly: with reads now included, the log gets busier. That's the honest tradeoff of visibility. A quieter log that only shows mutations is easier to skim and tells you less; a busier one that shows reads too is harder to skim at a glance and tells you what actually happened.

## Every tools/call Is Logged Now, Not Just the Mutating Ones

The mechanism behind this is a change to what the audit gate considers loggable. It used to log mutating tool calls only. It now logs every `tools/call`, with reads stamped `method=GET` so they're distinguishable from mutations in the same table. There's no sampling and no allowlist deciding which reads make it into the log: every one does.

<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGRhdGEtZDItdmVyc2lvbj0iMC43LjEiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWluIG1lZXQiIHZpZXdCb3g9IjAgMCA4MDEgNjAwIiB3aWR0aD0iODAxIiBoZWlnaHQ9IjYwMCI+PHN2ZyBjbGFzcz0iZDItMjM1MDE3ODI1IGQyLXN2ZyIgd2lkdGg9IjgwMSIgaGVpZ2h0PSI2MDAiIHZpZXdCb3g9Ii0xMDEgLTEwMSA4MDEgNjAwIj48cmVjdCB4PSItMTAxLjAwMDAwMCIgeT0iLTEwMS4wMDAwMDAiIHdpZHRoPSI4MDEuMDAwMDAwIiBoZWlnaHQ9IjYwMC4wMDAwMDAiIHJ4PSIwLjAwMDAwMCIgZmlsbD0iI0ZGRkZGRiIgY2xhc3M9IiBmaWxsLU43IiBzdHJva2Utd2lkdGg9IjAiIC8+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKLmQyLTIzNTAxNzgyNSAudGV4dC1ib2xkIHsKCWZvbnQtZmFtaWx5OiAiZDItMjM1MDE3ODI1LWZvbnQtYm9sZCI7Cn0KQGZvbnQtZmFjZSB7Cglmb250LWZhbWlseTogZDItMjM1MDE3ODI1LWZvbnQtYm9sZDsKCXNyYzogdXJsKCJkYXRhOmFwcGxpY2F0aW9uL2ZvbnQtd29mZjtiYXNlNjQsZDA5R1JnQUJBQUFBQUEzRUFBb0FBQUFBRlJnQUFndUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJQVXk4eUFBQUE5QUFBQUdBQUFBQmdYeEhYcm1OdFlYQUFBQUZVQUFBQW5nQUFBTm9EV3dTMVoyeDVaZ0FBQWZRQUFBYzZBQUFKbURvelBIRm9aV0ZrQUFBSk1BQUFBRFlBQUFBMkczOGUxR2hvWldFQUFBbG9BQUFBSkFBQUFDUUtmd1hoYUcxMGVBQUFDWXdBQUFDSUFBQUFpRUU0QllKc2IyTmhBQUFLRkFBQUFFWUFBQUJHTGVvcjVtMWhlSEFBQUFwY0FBQUFJQUFBQUNBQU9nRDNibUZ0WlFBQUNud0FBQU1vQUFBSUtnandWa0Z3YjNOMEFBQU5wQUFBQUIwQUFBQWcvOUVBTWdBREFpb0N2QUFGQUFBQ2lnSllBQUFBU3dLS0FsZ0FBQUZlQURJQktRQUFBZ3NIQXdNRUF3SUNCR0FBQXZjQUFBQURBQUFBQUFBQUFBQkJSRUpQQUNBQUlQLy9BdTcvQmdBQUE5Z0JFU0FBQVo4QUFBQUFBZkFDbEFBQUFDQUFBM2ljZk0zSlNjUUFBRWJoTHlidWNkOVhVb0JnQlI1RXhKTWdZZ01lQlVId1lFY2lGcURpUldjYW1CN1N3REFkL0FNcElPL3lMZzhlQ3FVQ3Rjb0lqVWJWK2N5NUM1ZXVYTHR4Njg2OUIwOWV2Q1U5eGFObnIwbmFUREpPbTJFRytjOWZmdk9UNzN6bE14OTU3NTc5Rkk2ZE9EV2pWSmsxWjk2Q1JVdVcxVmFzV3JOdXc2WXQyM2JzMnJQdndLRWpwZ0FBQVAvL0FRQUEvLzgyYWluNEFBQjRuR3hXUzJ6YjVoMy9mNTlvc2xibzJCUkZVbStKcEVWS2ZzaTJLRXJ4VTVZdFArSklmZ1d4bmNXdkJrR2F6bkdTSnNyaWR1bDJhTlpEcTJBYmxBMVpNMnhkc1dJWTBCeUNZSWNWOEE0N3JBdnFXNEwxMUt3RGhoMGFJREVDWTFoVG1ScEl5WG1oQi91N1NMLy83Lzk3ZkorZ0RxWUI4SEY4RFd4UUQ0M2dBQTVBWTBRbXJLbXFUS1cwVkVvV2JDa1ZNZFEwZGhnZi8xNk5FdEVvMFJLNkhueHJaUVhsbC9HMTNkUEg4c2VQLzNlbHQ5ZjR6WjgvTmE2aUM1OEM0TW9UQUR5TWkxQVBEQUJMYWFxaXFESkoybGlObFZXWitrL1QrNDBOM2dhQ2RqL1p1clgxNjhobkVUVFIxOWQxUmt1c0d6L0J4ZDNDalJzQUFBaGlsUjNjaWErREY2Qk9VaFE5a1V4cWNWNmdGRVdXU0pKejhsbzhtUkpJdERUNzN1RWpWMmZUSjhSSmQwcHVPOWc2Tng1SnV5Wm42ZHd2MWsvL2FrYVRsZ1YvZkhub3hMbG05K0lxSU1nRG9FZTRDUHVzZlRtUjB6aVpFN2s4dW01OGUvOCthc1RGeSsvODhKZVhuM0xJNHVzUS9DNE9OUXE2ckdzTVNhTDFvejgvTXYreitiR1RvYno3UUV0dWRmR1lVNkZQUDVUZXFCRkppTXQ4NE56eEUrZnM5bk1ieGoweFZ1V0NiK0tpaWE4eEdzdnpncFpNcGxpTmtjMVJLWm1pWkZXVkE1amo4cjk3M2U2d0UzYkcvdHFINzFMMU5rSmZtbGxLRU1RckZDNGE5MzBEZ2NDQUQwbTdoVWVocWVuZ2pXKyt1UkdjbmdvOUFzRFdqRTVjQkJxYzFwUTR6M05Pa3BSbGp0SGlla0tSNWZ4WDR4ZEhSd3NqTStNYmczMVpYRlFYcDNMSE83NUVzNmUwRnRPTEtzWmhYSVQ5SUR5SFFabUdtaWpKS3N5RGtmUFp0SDd0NDdkbmNqMzkvVDA1WEF3dlRJNHZDY2EzRHg2ZzFhN09Uc1hVMUEyQVdWd0V5a1NTZFpHVG1hM2I2TWx0M0hUNTh1NTJkVjVMWlFmZFEyVndnd3dnU0tid0tVdHpTclVjNEJqWnpGVEtsTi9Ld2wreTAxZEtXSTRHQjV2MWpyV2VsWk1iZGlJNDlvbzd6RTcyQmVuNTlPUkNvNmk2dUZmOXpXZk9HLy9XZlBKNWdaMjN0L3BkZ2pVdlU5bkJQTjRFWjgxcFZhWmtSdU1vYTVnbGwyb3VLVXNVeC9Ob1JCejJFL1NGRXVIUFNuMExIWDByQzBweXJpM3FqTkJpU01lYm4rUTgvb0UzY2tmZVRHK001dDV0Lzl5eDM4cFNjMlVIYmFJeWVGN08wck1vQ1NTSjNDTm5NK00veU1iR2ZDTnlTRStuTzEweHRpYzhSL2RmbkQxYzZBOElLLzVjWmpEUE5hNkd2Rld0MU1vT0t1Tk5ZQ0cwcDVVRnJPcmFjeXJ0SmZieDR0bmVsVVQwZ0pzc2JkZ0p6eWgycVE2MjFTa25PK2ozMzV5NU9PQno1ZjY0Tzl6bGtUZWM3czhkKzRmSERvNEF0cmovQzVYQjlWSVRyQlNJUEsvRlRlNDJMV0ZPUWNHeDgwUERwM3ZIbGpvSWJIeGhIKzNTazEzSzhnZTMxVFlwU1E4VVptY0s2ZlJhbGczWEp6WHhxQ2VBZXFKNlI3WHpMZ0JVd0hmTTA4eEc2cVhDbVZWbHZqYzAxRHc5SEV3MGVSczh0RGR3OUNoNmU3M09xODhsYVBKMFhaMm9CQzRZN3dEWVFLcTBZd3FWb1FONlljSlNSdEVUcGhCbW1QUzlGUVNOazJ1RmtGVExCek5lVHBLMFZWTnRpY2JXRWk0cDFrY2U5eXdmR0dPOUlaY24yck9zdDRsL21xTHFFd3NwZjlBaFJhY1hYODFlbnZDcnF0K3ZxdEg0b0JyVzNDTHQ3Yi9yT2REV0Z5RWFJa0Z2dklsd1pGdjdwaUwwMmo3SjJUM1JiRy9rV1VmdnNEWVRRM2Rhb21vMEVvbTJHS1ZtdDlCa3M3bmNQbjlWbTR4cHRwVlJzNEcxYkhLTXpGZ3NLU1pUb255SDRqTUhTLzZRTCtMQ201OGNkYmV1TFJsYlNFeEczSUp4Q3lvVlNBSEFsL2d1Vmt3ZmdZSVF2RmZGcnV3Z0I5NkV4bXFDR0kxNUdzaS81M3BMVEgwZFJUcm9NSDNzRUpaM3Z4QWNDSzNYVVZWT05qOHFnMmh4TWk4djA2MFhtRkZQejR6WnlkRXVQY09LRTEzVGgwcitVTGpUL05lQnRnZUQ3YTBScVd1UGJxZHhxM2JzN1kzS3RiMXJNNTdmZThOT2hQSlBGMGZiNlVEN0MzdFg4MnRsb2ZHbDErUlp0V3RPSXo1OU5wczltMDZmeVdiUHBOdGpzZlpZZTN1dGUvMkZ3N01YK3kvbEJ6TTVzNEkxVDlCUFVSa2NMK3hmVFd1Vm1UZW5jRDY3cThIZDVPdDNvdTM1ZUZkZDNZOEpJaG8zdmdJRVhHVUgvUmFWUWJWMFYxTm1rMHd5aWhyRGV1SVpHT2ZraFFEbW5PVGRydGVVSVNrZEZBUCttQ2ZRRzNuOVNQZDhjTWlUOEhSM0s2SCs2Q2xhQ1M2NnZRTEw4S3lkYnU2T2pzeXByZ1VucjdyYysvZkozYkhocFdxV21Nb09Pb01MNW0xZUp5bTZMdXVwbEdZOWhNOHVJbGljeXVhWXR5NWRrdjIwMnk2d0tmcjdjM2ZXeVN0WExueldFaWFKTlpLdVl2VlZkdEQvMExicHp3dlpZV3JYeno5bURwWUNJWi9DbHpiMjJZSVQ5Tm9TU2hqLzFLTWVQeG8zbWtiQ2JZQ0FCa0FWdEEwTkFKcE5FMnJ2WUVxejNmN0R0VUU3YXlmcVdYdm02a2RvKyt0d1hsWHo0YStOcHRyN1BJQUFicHI2QzJveXFVcVNiRjJBMVE3bkFnZDZFQ2F3bkV3cThjVGlYeWVkbVhCclJJbE5aR1kzcXR3Yktxc29pZjhHTmdDQjFXd05kMWJ2ZkdnN1dmN0E3SW9FSDZHSDZERldRSVFDa0NCQ2NhK0hjQTl0bTkvUkdJM0psTkMyMFFTb2NoTjN3MkY4MS94ZHdUeEhJaHlMaGNPeEdPNXVrZVVXODgvRWtCQ1BIcUlmbVJpc0xuSVMya0w4cVZNQThIOEFBQUQvL3dFQUFQLy9qT0g3cVFBQUFBRUFBQUFDQzRVd0lLcUpYdzg4OVFBQkErZ0FBQUFBMkYyZ2hBQUFBQURkWmk4Mi9qZit4QWh0QS9FQUFRQURBQUlBQUFBQUFBQUFBUUFBQTlqKzd3QUFDSmorTi80M0NHMEFBUUFBQUFBQUFBQUFBQUFBQUFBQUFDSUNzZ0JRQU1nQUFBSTkvL29DUmdBdUFpUUFUUUorQUM0QytnQk5BbFFBVFFKbEFFMENMQUFaQWc4QUtnSTlBRUVCMHdBa0FqMEFKd0lHQUNRQlZRQVlBaFlBSWdJN0FFRUJGQUEzQVI0QVFRTlpBRUVDUEFCQkFpc0FKQUdPQUVFQnV3QVZBWDhBRVFJNEFEd0NDd0FNQVN3QUxnRlRBQTBDRUFBaUFSUUFRUUFBLzYwQ0VBQWlBQUFBTEFBc0FGQUFmQUNTQU1JQTlBRVdBVHdCVGdHR0FiZ0I1QUlXQWtvQ2NBTFlBdm9EQmdNaUExUURkZ09pQThJRC9nUWtCRVlFWWdTQ0JKQUVuQVNvQkw0RXpBQUFBQUVBQUFBaUFKQUFEQUJqQUFjQUFRQUFBQUFBQUFBQUFBQUFBQUFFQUFONG5KeVV6MjRiVlJUR2YwNXMwd3JCQWtWVnVvbnVna1dSNk5oVVNkVTJLNGZVaWtVVUI0OExRa0pJRTgvNGp6S2VHWGttRHVFSldQTVd2RVZYUEFUUGdWaWorWHpzMkFYUkpvcVNmSGZ1K2ZPZGM3NXpnUjMrWnB0SzlTSHdSejB4WEdHdmZtNTRpd2YxRThQYnRPdGJocXM4cWYxcHVFWllteHV1ODNtdFovZ2ozbFovTS95QS9lcFBoaCt5VzIwYi9waG4xUjNEbjJ3Ny9qTDhLZnU4WGVBS3ZPQlh3eFYyeVF4dnNjT1BocmQ1aE1Xc1ZIbEUwM0NOejlnelhHY1A2RE9oSUdaQ3dnakhrQWtqcnBnUmtlTVRNV1BDa0lnUVI0Y1dNWVcrSmdSQ2p0Ri9mZzN3S1pnUktPS1lBa2VNVDB4QXp0Z2kvaUt2bEhObEhPbzBzN3NXQldNQ0x1UnhTVUNDSTJWRVNrTEVwZUlVRkdTOG9rR0RuSUg0WmhUa2VPUk1pUEZJbVRHaVFaYzJwL1FaTXlISDBWYWtrcGxQeXBDQ2F3TGxkMlpSZG1aQVJFSnVySzVJQ01YVGlWOGs3dzZuT0xwa3NsMlBmTG9SNFVzYzM4bTc1SmJLOWlzOC9ibzFacHQ1bDJ3QzV1cG5ySzdFdXJuV0JNZTZMZk8yK0ZhNDRCWHVYdjNaWlBMK0hvWDZYeWp5QlZlYWY2aEpKV0tTNE53dUxYd3B5SGVQY1J6cDNNRlhSNzZuUTU4VHVyeWhyM09MSGoxYW5OR253MnY1ZHVuaCtKb3VaeHpMb3lPOHVHdExNV2Y4Z09NYk9ySXBZMGZXbjhYRUluNG1NM1huNGpoVEhWTXk5YnhrN3FuV1NCWGVmY0xsRHFVYjZzamxNOUFlbFpaTzgwdTBad0VqVTBVbWhsUDFjcW1OM1BvWG1pS21xcVdjN2UxOXVRMXoyNzNsRnQrUWFvZEx0UzQ0bFpOYk1IcmZWTDEzTkhPdEg0K0FrSlFMV1F4SW1kS2c0RWE4endtNElzWnhyTzZkYUVzS1dpdWZNcytOVkJJeEZZTU9pZUxNeVBRM01OMzR4bjJ3b1h0bmIwa28vNUxwNWFxcSsyUng2dFh0ak42b2U4czczN29jclUyZ1lWTk4xOVEwRU5mRXRCOXBwOWI1Ky9MTjlicWxQT1dJbEpqd1h5L0FNenlhN0hQQUlXTmxHT2htYnE5RFV5OUVrNWNjcXZwTElsa05wZWZJSWh6Zzhad0REbmpKODNmNnVHVGlqSXRiY1ZuUDNlS1lJN29jZmxBVkMvc3VSN3hlZmZ2L3JMK0xhVk8xT0o2dVRpL3VQY1VuZDFEckY5cXoyL2V5cDRtVms1aGJ0TnV0T0NOZ1duSnh1K3MxdWNkNC93QUFBUC8vQVFBQS8vLzB0MDlSZUp4aVlHWUFnLy9uR0l3WXNBQUFBQUFBLy84QkFBRC8veThCQWdNQUFBQT0iKTsKfV1dPjwvc3R5bGU+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsuc2hhcGUgewogIHNoYXBlLXJlbmRlcmluZzogZ2VvbWV0cmljUHJlY2lzaW9uOwogIHN0cm9rZS1saW5lam9pbjogcm91bmQ7Cn0KLmNvbm5lY3Rpb24gewogIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICBzdHJva2UtbGluZWpvaW46IHJvdW5kOwp9Ci5ibGVuZCB7CiAgbWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5OwogIG9wYWNpdHk6IDAuNTsKfQoKCQkuZDItMjM1MDE3ODI1IC5maWxsLU4xe2ZpbGw6IzBBMEYyNTt9CgkJLmQyLTIzNTAxNzgyNSAuZmlsbC1OMntmaWxsOiM2NzZDN0U7fQoJCS5kMi0yMzUwMTc4MjUgLmZpbGwtTjN7ZmlsbDojOTQ5OUFCO30KCQkuZDItMjM1MDE3ODI1IC5maWxsLU40e2ZpbGw6I0NGRDJERDt9CgkJLmQyLTIzNTAxNzgyNSAuZmlsbC1ONXtmaWxsOiNERUUxRUI7fQoJCS5kMi0yMzUwMTc4MjUgLmZpbGwtTjZ7ZmlsbDojRUVGMUY4O30KCQkuZDItMjM1MDE3ODI1IC5maWxsLU43e2ZpbGw6I0ZGRkZGRjt9CgkJLmQyLTIzNTAxNzgyNSAuZmlsbC1CMXtmaWxsOiMwRDMyQjI7fQoJCS5kMi0yMzUwMTc4MjUgLmZpbGwtQjJ7ZmlsbDojMEQzMkIyO30KCQkuZDItMjM1MDE3ODI1IC5maWxsLUIze2ZpbGw6I0UzRTlGRDt9CgkJLmQyLTIzNTAxNzgyNSAuZmlsbC1CNHtmaWxsOiNFM0U5RkQ7fQoJCS5kMi0yMzUwMTc4MjUgLmZpbGwtQjV7ZmlsbDojRURGMEZEO30KCQkuZDItMjM1MDE3ODI1IC5maWxsLUI2e2ZpbGw6I0Y3RjhGRTt9CgkJLmQyLTIzNTAxNzgyNSAuZmlsbC1BQTJ7ZmlsbDojNEE2RkYzO30KCQkuZDItMjM1MDE3ODI1IC5maWxsLUFBNHtmaWxsOiNFREYwRkQ7fQoJCS5kMi0yMzUwMTc4MjUgLmZpbGwtQUE1e2ZpbGw6I0Y3RjhGRTt9CgkJLmQyLTIzNTAxNzgyNSAuZmlsbC1BQjR7ZmlsbDojRURGMEZEO30KCQkuZDItMjM1MDE3ODI1IC5maWxsLUFCNXtmaWxsOiNGN0Y4RkU7fQoJCS5kMi0yMzUwMTc4MjUgLnN0cm9rZS1OMXtzdHJva2U6IzBBMEYyNTt9CgkJLmQyLTIzNTAxNzgyNSAuc3Ryb2tlLU4ye3N0cm9rZTojNjc2QzdFO30KCQkuZDItMjM1MDE3ODI1IC5zdHJva2UtTjN7c3Ryb2tlOiM5NDk5QUI7fQoJCS5kMi0yMzUwMTc4MjUgLnN0cm9rZS1ONHtzdHJva2U6I0NGRDJERDt9CgkJLmQyLTIzNTAxNzgyNSAuc3Ryb2tlLU41e3N0cm9rZTojREVFMUVCO30KCQkuZDItMjM1MDE3ODI1IC5zdHJva2UtTjZ7c3Ryb2tlOiNFRUYxRjg7fQoJCS5kMi0yMzUwMTc4MjUgLnN0cm9rZS1ON3tzdHJva2U6I0ZGRkZGRjt9CgkJLmQyLTIzNTAxNzgyNSAuc3Ryb2tlLUIxe3N0cm9rZTojMEQzMkIyO30KCQkuZDItMjM1MDE3ODI1IC5zdHJva2UtQjJ7c3Ryb2tlOiMwRDMyQjI7fQoJCS5kMi0yMzUwMTc4MjUgLnN0cm9rZS1CM3tzdHJva2U6I0UzRTlGRDt9CgkJLmQyLTIzNTAxNzgyNSAuc3Ryb2tlLUI0e3N0cm9rZTojRTNFOUZEO30KCQkuZDItMjM1MDE3ODI1IC5zdHJva2UtQjV7c3Ryb2tlOiNFREYwRkQ7fQoJCS5kMi0yMzUwMTc4MjUgLnN0cm9rZS1CNntzdHJva2U6I0Y3RjhGRTt9CgkJLmQyLTIzNTAxNzgyNSAuc3Ryb2tlLUFBMntzdHJva2U6IzRBNkZGMzt9CgkJLmQyLTIzNTAxNzgyNSAuc3Ryb2tlLUFBNHtzdHJva2U6I0VERjBGRDt9CgkJLmQyLTIzNTAxNzgyNSAuc3Ryb2tlLUFBNXtzdHJva2U6I0Y3RjhGRTt9CgkJLmQyLTIzNTAxNzgyNSAuc3Ryb2tlLUFCNHtzdHJva2U6I0VERjBGRDt9CgkJLmQyLTIzNTAxNzgyNSAuc3Ryb2tlLUFCNXtzdHJva2U6I0Y3RjhGRTt9CgkJLmQyLTIzNTAxNzgyNSAuYmFja2dyb3VuZC1jb2xvci1OMXtiYWNrZ3JvdW5kLWNvbG9yOiMwQTBGMjU7fQoJCS5kMi0yMzUwMTc4MjUgLmJhY2tncm91bmQtY29sb3ItTjJ7YmFja2dyb3VuZC1jb2xvcjojNjc2QzdFO30KCQkuZDItMjM1MDE3ODI1IC5iYWNrZ3JvdW5kLWNvbG9yLU4ze2JhY2tncm91bmQtY29sb3I6Izk0OTlBQjt9CgkJLmQyLTIzNTAxNzgyNSAuYmFja2dyb3VuZC1jb2xvci1ONHtiYWNrZ3JvdW5kLWNvbG9yOiNDRkQyREQ7fQoJCS5kMi0yMzUwMTc4MjUgLmJhY2tncm91bmQtY29sb3ItTjV7YmFja2dyb3VuZC1jb2xvcjojREVFMUVCO30KCQkuZDItMjM1MDE3ODI1IC5iYWNrZ3JvdW5kLWNvbG9yLU42e2JhY2tncm91bmQtY29sb3I6I0VFRjFGODt9CgkJLmQyLTIzNTAxNzgyNSAuYmFja2dyb3VuZC1jb2xvci1ON3tiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7fQoJCS5kMi0yMzUwMTc4MjUgLmJhY2tncm91bmQtY29sb3ItQjF7YmFja2dyb3VuZC1jb2xvcjojMEQzMkIyO30KCQkuZDItMjM1MDE3ODI1IC5iYWNrZ3JvdW5kLWNvbG9yLUIye2JhY2tncm91bmQtY29sb3I6IzBEMzJCMjt9CgkJLmQyLTIzNTAxNzgyNSAuYmFja2dyb3VuZC1jb2xvci1CM3tiYWNrZ3JvdW5kLWNvbG9yOiNFM0U5RkQ7fQoJCS5kMi0yMzUwMTc4MjUgLmJhY2tncm91bmQtY29sb3ItQjR7YmFja2dyb3VuZC1jb2xvcjojRTNFOUZEO30KCQkuZDItMjM1MDE3ODI1IC5iYWNrZ3JvdW5kLWNvbG9yLUI1e2JhY2tncm91bmQtY29sb3I6I0VERjBGRDt9CgkJLmQyLTIzNTAxNzgyNSAuYmFja2dyb3VuZC1jb2xvci1CNntiYWNrZ3JvdW5kLWNvbG9yOiNGN0Y4RkU7fQoJCS5kMi0yMzUwMTc4MjUgLmJhY2tncm91bmQtY29sb3ItQUEye2JhY2tncm91bmQtY29sb3I6IzRBNkZGMzt9CgkJLmQyLTIzNTAxNzgyNSAuYmFja2dyb3VuZC1jb2xvci1BQTR7YmFja2dyb3VuZC1jb2xvcjojRURGMEZEO30KCQkuZDItMjM1MDE3ODI1IC5iYWNrZ3JvdW5kLWNvbG9yLUFBNXtiYWNrZ3JvdW5kLWNvbG9yOiNGN0Y4RkU7fQoJCS5kMi0yMzUwMTc4MjUgLmJhY2tncm91bmQtY29sb3ItQUI0e2JhY2tncm91bmQtY29sb3I6I0VERjBGRDt9CgkJLmQyLTIzNTAxNzgyNSAuYmFja2dyb3VuZC1jb2xvci1BQjV7YmFja2dyb3VuZC1jb2xvcjojRjdGOEZFO30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1OMXtjb2xvcjojMEEwRjI1O30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1OMntjb2xvcjojNjc2QzdFO30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1OM3tjb2xvcjojOTQ5OUFCO30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1ONHtjb2xvcjojQ0ZEMkREO30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1ONXtjb2xvcjojREVFMUVCO30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1ONntjb2xvcjojRUVGMUY4O30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1ON3tjb2xvcjojRkZGRkZGO30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1CMXtjb2xvcjojMEQzMkIyO30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1CMntjb2xvcjojMEQzMkIyO30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1CM3tjb2xvcjojRTNFOUZEO30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1CNHtjb2xvcjojRTNFOUZEO30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1CNXtjb2xvcjojRURGMEZEO30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1CNntjb2xvcjojRjdGOEZFO30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1BQTJ7Y29sb3I6IzRBNkZGMzt9CgkJLmQyLTIzNTAxNzgyNSAuY29sb3ItQUE0e2NvbG9yOiNFREYwRkQ7fQoJCS5kMi0yMzUwMTc4MjUgLmNvbG9yLUFBNXtjb2xvcjojRjdGOEZFO30KCQkuZDItMjM1MDE3ODI1IC5jb2xvci1BQjR7Y29sb3I6I0VERjBGRDt9CgkJLmQyLTIzNTAxNzgyNSAuY29sb3ItQUI1e2NvbG9yOiNGN0Y4RkU7fS5hcHBlbmRpeCB0ZXh0LnRleHR7ZmlsbDojMEEwRjI1fS5tZHstLWNvbG9yLWZnLWRlZmF1bHQ6IzBBMEYyNTstLWNvbG9yLWZnLW11dGVkOiM2NzZDN0U7LS1jb2xvci1mZy1zdWJ0bGU6Izk0OTlBQjstLWNvbG9yLWNhbnZhcy1kZWZhdWx0OiNGRkZGRkY7LS1jb2xvci1jYW52YXMtc3VidGxlOiNFRUYxRjg7LS1jb2xvci1ib3JkZXItZGVmYXVsdDojMEQzMkIyOy0tY29sb3ItYm9yZGVyLW11dGVkOiMwRDMyQjI7LS1jb2xvci1uZXV0cmFsLW11dGVkOiNFRUYxRjg7LS1jb2xvci1hY2NlbnQtZmc6IzBEMzJCMjstLWNvbG9yLWFjY2VudC1lbXBoYXNpczojMEQzMkIyOy0tY29sb3ItYXR0ZW50aW9uLXN1YnRsZTojNjc2QzdFOy0tY29sb3ItZGFuZ2VyLWZnOnJlZDt9LnNrZXRjaC1vdmVybGF5LUIxe2ZpbGw6dXJsKCNzdHJlYWtzLWRhcmtlci1kMi0yMzUwMTc4MjUpO21peC1ibGVuZC1tb2RlOmxpZ2h0ZW59LnNrZXRjaC1vdmVybGF5LUIye2ZpbGw6dXJsKCNzdHJlYWtzLWRhcmtlci1kMi0yMzUwMTc4MjUpO21peC1ibGVuZC1tb2RlOmxpZ2h0ZW59LnNrZXRjaC1vdmVybGF5LUIze2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi0yMzUwMTc4MjUpO21peC1ibGVuZC1tb2RlOmRhcmtlbn0uc2tldGNoLW92ZXJsYXktQjR7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTIzNTAxNzgyNSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1CNXtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItMjM1MDE3ODI1KTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LUI2e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi0yMzUwMTc4MjUpO21peC1ibGVuZC1tb2RlOmRhcmtlbn0uc2tldGNoLW92ZXJsYXktQUEye2ZpbGw6dXJsKCNzdHJlYWtzLWRhcmstZDItMjM1MDE3ODI1KTttaXgtYmxlbmQtbW9kZTpvdmVybGF5fS5za2V0Y2gtb3ZlcmxheS1BQTR7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTIzNTAxNzgyNSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1BQTV7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTIzNTAxNzgyNSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1BQjR7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTIzNTAxNzgyNSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1BQjV7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTIzNTAxNzgyNSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1OMXtmaWxsOnVybCgjc3RyZWFrcy1kYXJrZXItZDItMjM1MDE3ODI1KTttaXgtYmxlbmQtbW9kZTpsaWdodGVufS5za2V0Y2gtb3ZlcmxheS1OMntmaWxsOnVybCgjc3RyZWFrcy1kYXJrLWQyLTIzNTAxNzgyNSk7bWl4LWJsZW5kLW1vZGU6b3ZlcmxheX0uc2tldGNoLW92ZXJsYXktTjN7ZmlsbDp1cmwoI3N0cmVha3Mtbm9ybWFsLWQyLTIzNTAxNzgyNSk7bWl4LWJsZW5kLW1vZGU6Y29sb3ItYnVybn0uc2tldGNoLW92ZXJsYXktTjR7ZmlsbDp1cmwoI3N0cmVha3Mtbm9ybWFsLWQyLTIzNTAxNzgyNSk7bWl4LWJsZW5kLW1vZGU6Y29sb3ItYnVybn0uc2tldGNoLW92ZXJsYXktTjV7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTIzNTAxNzgyNSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1ONntmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItMjM1MDE3ODI1KTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LU43e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi0yMzUwMTc4MjUpO21peC1ibGVuZC1tb2RlOmRhcmtlbn0ubGlnaHQtY29kZXtkaXNwbGF5OiBibG9ja30uZGFyay1jb2Rle2Rpc3BsYXk6IG5vbmV9XV0+PC9zdHlsZT48ZyBjbGFzcz0iWTJGc2JBPT0iPjxnIGNsYXNzPSJzaGFwZSIgPjxyZWN0IHg9IjE5Ny4wMDAwMDAiIHk9IjAuMDAwMDAwIiB3aWR0aD0iMTk3LjAwMDAwMCIgaGVpZ2h0PSI2Ni4wMDAwMDAiIHN0cm9rZT0iIzBEMzJCMiIgZmlsbD0iI0Y3RjhGRSIgY2xhc3M9IiBzdHJva2UtQjEgZmlsbC1CNiIgc3R5bGU9InN0cm9rZS13aWR0aDoyOyIgLz48L2c+PHRleHQgeD0iMjk1LjUwMDAwMCIgeT0iMzguNTAwMDAwIiBmaWxsPSIjMEEwRjI1IiBjbGFzcz0idGV4dC1ib2xkIGZpbGwtTjEiIHN0eWxlPSJ0ZXh0LWFuY2hvcjptaWRkbGU7Zm9udC1zaXplOjE2cHgiPk1DUCB0b29scy9jYWxsIGFycml2ZXM8L3RleHQ+PC9nPjxnIGNsYXNzPSJaMkYwWlE9PSI+PGcgY2xhc3M9InNoYXBlIiA+PHJlY3QgeD0iMjM2LjAwMDAwMCIgeT0iMTY2LjAwMDAwMCIgd2lkdGg9IjExOS4wMDAwMDAiIGhlaWdodD0iNjYuMDAwMDAwIiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9IiNGN0Y4RkUiIGNsYXNzPSIgc3Ryb2tlLUIxIGZpbGwtQjYiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIC8+PC9nPjx0ZXh0IHg9IjI5NS41MDAwMDAiIHk9IjIwNC41MDAwMDAiIGZpbGw9IiMwQTBGMjUiIGNsYXNzPSJ0ZXh0LWJvbGQgZmlsbC1OMSIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MTZweCI+QXVkaXQgZ2F0ZTwvdGV4dD48L2c+PGcgY2xhc3M9ImJYVjBZWFJwYjI1ZmNHRjBhQT09Ij48ZyBjbGFzcz0ic2hhcGUiID48cmVjdCB4PSIwLjAwMDAwMCIgeT0iMzMyLjAwMDAwMCIgd2lkdGg9IjI2MS4wMDAwMDAiIGhlaWdodD0iNjYuMDAwMDAwIiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9IiNGN0Y4RkUiIGNsYXNzPSIgc3Ryb2tlLUIxIGZpbGwtQjYiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIC8+PC9nPjx0ZXh0IHg9IjEzMC41MDAwMDAiIHk9IjM3MC41MDAwMDAiIGZpbGw9IiMwQTBGMjUiIGNsYXNzPSJ0ZXh0LWJvbGQgZmlsbC1OMSIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MTZweCI+TXV0YXRpbmcgY2FsbCwgbG9nZ2VkIGFzIGJlZm9yZTwvdGV4dD48L2c+PGcgY2xhc3M9ImNtVmhaRjl3WVhSbyI+PGcgY2xhc3M9InNoYXBlIiA+PHJlY3QgeD0iMzIxLjAwMDAwMCIgeT0iMzMyLjAwMDAwMCIgd2lkdGg9IjI3OC4wMDAwMDAiIGhlaWdodD0iNjYuMDAwMDAwIiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9IiNGN0Y4RkUiIGNsYXNzPSIgc3Ryb2tlLUIxIGZpbGwtQjYiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIC8+PC9nPjx0ZXh0IHg9IjQ2MC4wMDAwMDAiIHk9IjM3MC41MDAwMDAiIGZpbGw9IiMwQTBGMjUiIGNsYXNzPSJ0ZXh0LWJvbGQgZmlsbC1OMSIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MTZweCI+UmVhZCBjYWxsLCBsb2dnZWQgYXMgbWV0aG9kPUdFVDwvdGV4dD48L2c+PGcgY2xhc3M9IktHTmhiR3dnTFNabmREc2daMkYwWlNsYk1GMD0iPjxtYXJrZXIgaWQ9Im1rLWQyLTIzNTAxNzgyNS0zNDg4Mzc4MTM0IiBtYXJrZXJXaWR0aD0iMTAuMDAwMDAwIiBtYXJrZXJIZWlnaHQ9IjEyLjAwMDAwMCIgcmVmWD0iNy4wMDAwMDAiIHJlZlk9IjYuMDAwMDAwIiB2aWV3Qm94PSIwLjAwMDAwMCAwLjAwMDAwMCAxMC4wMDAwMDAgMTIuMDAwMDAwIiBvcmllbnQ9ImF1dG8iIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+IDxwb2x5Z29uIHBvaW50cz0iMC4wMDAwMDAsMC4wMDAwMDAgMTAuMDAwMDAwLDYuMDAwMDAwIDAuMDAwMDAwLDEyLjAwMDAwMCIgZmlsbD0iIzBEMzJCMiIgY2xhc3M9ImNvbm5lY3Rpb24gZmlsbC1CMSIgc3Ryb2tlLXdpZHRoPSIyIiAvPiA8L21hcmtlcj48cGF0aCBkPSJNIDI5NS4yNTAwMDAgNjguMDAwMDAwIEMgMjk1LjI1MDAwMCAxMDYuMDAwMDAwIDI5NS4yNTAwMDAgMTI2LjAwMDAwMCAyOTUuMjUwMDAwIDE2Mi4wMDAwMDAiIHN0cm9rZT0iIzBEMzJCMiIgZmlsbD0ibm9uZSIgY2xhc3M9ImNvbm5lY3Rpb24gc3Ryb2tlLUIxIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiBtYXJrZXItZW5kPSJ1cmwoI21rLWQyLTIzNTAxNzgyNS0zNDg4Mzc4MTM0KSIgbWFzaz0idXJsKCNkMi0yMzUwMTc4MjUpIiAvPjwvZz48ZyBjbGFzcz0iS0dkaGRHVWdMU1puZERzZ2JYVjBZWFJwYjI1ZmNHRjBhQ2xiTUYwPSI+PHBhdGggZD0iTSAyMzMuOTYzODY5IDIyOS44NzQ4NTkgQyAxNTEuNTUwMDAzIDI3MS4zOTQ5ODkgMTMwLjUwMDAwMCAyOTIuMDAwMDAwIDEzMC41MDAwMDAgMzI4LjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSJub25lIiBjbGFzcz0iY29ubmVjdGlvbiBzdHJva2UtQjEiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIG1hcmtlci1lbmQ9InVybCgjbWstZDItMjM1MDE3ODI1LTM0ODgzNzgxMzQpIiBtYXNrPSJ1cmwoI2QyLTIzNTAxNzgyNSkiIC8+PC9nPjxnIGNsYXNzPSJLR2RoZEdVZ0xTWm5kRHNnY21WaFpGOXdZWFJvS1Zzd1hRPT0iPjxwYXRoIGQ9Ik0gMzU2Ljc4NTQ0MSAyMjkuOTAxMjIyIEMgNDM5LjAwMDAwMCAyNzEuMzk5OTk0IDQ2MC4wMDAwMDAgMjkyLjAwMDAwMCA0NjAuMDAwMDAwIDMyOC4wMDAwMDAiIHN0cm9rZT0iIzBEMzJCMiIgZmlsbD0ibm9uZSIgY2xhc3M9ImNvbm5lY3Rpb24gc3Ryb2tlLUIxIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiBtYXJrZXItZW5kPSJ1cmwoI21rLWQyLTIzNTAxNzgyNS0zNDg4Mzc4MTM0KSIgbWFzaz0idXJsKCNkMi0yMzUwMTc4MjUpIiAvPjwvZz48bWFzayBpZD0iZDItMjM1MDE3ODI1IiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSItMTAxIiB5PSItMTAxIiB3aWR0aD0iODAxIiBoZWlnaHQ9IjYwMCI+CjxyZWN0IHg9Ii0xMDEiIHk9Ii0xMDEiIHdpZHRoPSI4MDEiIGhlaWdodD0iNjAwIiBmaWxsPSJ3aGl0ZSI+PC9yZWN0PgoKPC9tYXNrPjwvc3ZnPjwvc3ZnPgo=" alt="Architecture diagram" style={{maxWidth:"100%",height:"auto",display:"block",margin:"2em auto"}} />

That's a meaningfully different guarantee than "we log the reads we think matter." A sampled or allowlisted approach would require deciding in advance which lookups are worth keeping. Any assistant behavior nobody anticipated when writing that allowlist would fall outside it silently. Logging everything sidesteps that guessing game entirely.

## What Gets Stored, and What Deliberately Doesn't

A read row never stores the response body, only the request. That's a deliberate boundary: the audit log records that a lookup happened and what was asked for, not a full copy of whatever data came back. A new `ErrorMessage` field preserves the failure detail for a read that errored out, without needing to persist the response payload to explain what went wrong.

Supporting that volume of new rows without slowing down the log itself needed a new index. It was added on `audit_logs(source, created_at, tool)`, specifically for the rollup queries this feature depends on. The existing audit-failure counters were adjusted at the same time to exclude the new read rows, so a spike in read volume doesn't get mistaken for a spike in failures on a dashboard that was built before reads existed in this table at all.

## The Security Fix Hiding Inside a Visibility Feature

One more change shipped folded into this release, and it's worth separating out because it's not really a visibility improvement, it's a gap closing. An MCP tool call that didn't map to a known tool, or carried no `org_id`, used to get shadow-forwarded anyway and logged as if it were a harmless read. That's a quiet way for an unclassified call to slip through: it gets treated as safe by default rather than rejected for being something the system couldn't identify.

That path is now rejected outright instead of forwarded. The two changes in this release are connected more tightly than they look. Logging every read only tells you the truth if every call actually gets classified as a read or a mutation in the first place; a call the system can't identify was never a "harmless read" to log, it was a gap in classification that happened to log something reassuring. Closing that gap and turning on read-logging are one fix looked at from two angles, not two separate improvements that happened to ship together.
