Manav.id
Compliance · 4 min read

Auditing across vendors who will not give you their database

Auditing across vendors who will not give you their database

An agent workflow touches a model provider, two SaaS platforms and your own services. Auditing it means asking four organisations for records they have commercial reasons to limit, in formats that do not join.

Why can nobody reconstruct what happened across four vendors?

Because each holds one segment of the trail in its own schema, with its own retention, its own redactions and no shared correlation identifier. The auditor's work becomes reconciliation rather than assurance, and the joins are guesses dressed as findings.

Key takeaways
  • Vendors limit log access for legitimate reasons: other customers' data, competitive detail, and the cost of bespoke extracts.
  • What comes back is partial, differently timestamped, and keyed by identifiers that do not join across systems.
  • Portable receipts move the evidence to the workflow rather than the platform, so no vendor cooperation is needed to verify it.

Why vendors say no

Vendor-held logsFour schemas, four clocksRetention set by the vendorRedacted for other customersNo shared correlation idAvailable on request, eventuallyWorkflow-held receiptsOne format, one clock referenceRetention you controlContains only your workflowBound by a chain identifierVerifiable offline, immediatelyvs

It is tempting to read this as obstruction. Mostly it is not.

ReasonLegitimacy
Logs contain other customers' dataEntirely legitimate — they cannot share it
Logs reveal internal architectureReasonable commercial position
Extraction is bespoke engineering workReal cost, and they are not resourced for it
Retention is shorter than your audit periodCommon, and usually documented in the contract
Contract does not require itThe gap was in procurement, not in their conduct

The last row is where most of this originates. Audit access rights are rarely negotiated at purchase, and by the time they are needed the leverage is gone.

The join problem

Even when logs arrive, they do not reconcile. Four independent systems produce four independent record sets with no shared key.

# Vendor A
{"request_id":"req_8h2k","ts":"2025-11-19T14:22:01.442Z","user":"acct_44"}

# Vendor B
{"correlationId":"c-991f","timestamp":1763561521,"principal":"svc-integration"}

# Vendor C
{"eventId":"E88213","occurred":"11/19/2025 09:22:01 EST","actor":"system"}

# Your system
{"trace":"4471-88213","at":"2025-11-19T14:22:01Z","who":"u_4471"}

# No shared key. Three time formats. "actor": "system".

An auditor reconstructs this by correlating timestamps and inferring causality. It is slow, it is approximate, and the conclusion is an inference rather than a record.

Moving the evidence to the workflow

The alternative is to stop treating each platform's logs as the evidence and to produce an artefact that travels with the transaction.

# Emitted at the point of the consequential action, by whoever
# performs it, and carried with the workflow.

{
  "workflow": "wf-2025-88213",
  "step": 3,
  "action": "vendor_payment.release",
  "payload_digest": "sha256:9c1f...a83e",
  "actor": { "type": "human", "id": "[named]", "user_verified": true },
  "under_delegation": "dlg-4471",
  "at": "2025-11-19T14:22:01Z",
  "signature": "...",
  "prev": "sha256:2b7d...4056"      # links to step 2's receipt
}

The prev field chains the steps. An auditor receives an ordered sequence that verifies as a unit, rather than four log exports to correlate by hand.

What the auditor can do with it

The second point deserves emphasis. With log exports, a missing record is indistinguishable from an action that never happened. With a chain, a gap is detectable.

The obvious limit

This only covers actions instrumented to emit receipts. It says nothing about what a vendor did internally, and it does not replace the vendor's own assurance reporting.

That is a real boundary and it maps onto how responsibility is already allocated. You are responsible for the actions taken in your workflow; the vendor is responsible for their platform's controls, evidenced by their audit reports. The receipts cover the first, and always did.

What to negotiate at procurement

The time to fix this is before signing, and the asks are modest.

  1. The ability to attach an opaque identifier to requests and have it returned in responses and logs. Cheap for the vendor, solves the join problem.
  2. Log retention matching your audit period, stated in the contract.
  3. A defined export format and a committed turnaround for audit requests.
  4. Where the vendor performs consequential actions on your behalf, receipts or equivalent attestation for those actions.

The first is the highest value per unit of negotiating effort. Most platforms already support a correlation or metadata field; the ask is only that it round-trips reliably into their logs.

A worked example: the join

An action crosses an orchestration platform, a model provider, a retrieval service and an execution runtime. The auditor asks a simple question: which human authorised this, and what were they shown?

What each export contributes
SourceContainsMissing
OrchestratorRun ids, timestampsWhat was rendered to a person
Model providerToken counts, model versionAny customer-side context
Retrieval serviceDocument idsWhether the human saw them
Execution runtimeThe effectWho authorised it
All four joinedA plausible narrativeThe authorising human

The missing item is the same in every column, because no vendor was ever in a position to record it — the human was on your side of the boundary.

Objections and honest limits

“We can mandate log formats at procurement.” Worth doing, and it improves the joins. It does not produce the authorising human, because that event happens in your interface, not theirs.

“This adds another evidence store.” It replaces four partial ones with a portable artefact you hold. The vendor logs remain useful for operations; they stop being the assurance basis.

Making the trail survive the vendors

  1. Identify where a human authorises, in your interface. That is the one event nobody else can log.
  2. Emit a signed receipt there. Over the rendered effect.
  3. Carry a chain identifier into every vendor call. So their logs can be joined to yours.
  4. Keep receipts under your own retention. Independent of vendor policy.
  5. Negotiate export format and retention anyway. It improves the supporting picture.

Terms used here

Join problem
Reconstructing one event from several systems with no shared identifier or clock.
Correlation identifier
A value carried across services so their records can be linked afterwards.
Portable receipt
A signed artefact verifiable without calling the system that produced it.

Frequently asked questions

Are vendors being obstructive? Mostly not. Logs contain other customers' data, reveal architecture, and extraction is unfunded bespoke work. The gap usually originates in procurement.

Why don't log exports reconcile? Independent systems use independent identifiers and time formats, and many record a service principal rather than a person. Correlation is inference, not record.

What does chaining receipts add? A missing step becomes visible. With separate log exports, a missing record is indistinguishable from an action that never occurred.

What should be negotiated at purchase? A correlation identifier that round-trips into vendor logs, retention matching your audit period, a defined export format and turnaround.

Why will vendors not give full logs? Their stores are multi-tenant and contain other customers' data, so exports are redacted, partial and schema-specific by necessity.

What can the auditor do with receipts? Verify them offline against a published key and read what a named human was shown before they approved.

Does this replace vendor logs? No. It replaces them as the assurance basis; they remain useful operationally.

Where this fits in Manav

Manav produces the one record no vendor can: a signature from the authorising human over the effect they were shown, verifiable offline and held by you.

See portable receipts →

Sources and further reading