GovernanceCore

Cloud AI Discovery: What Bedrock, Vertex and Foundry Record by Default

Managed model platforms hide nothing, which is why the gap in them is easy to miss. The control plane records that a model was called, by whom and when. What was sent to it is a separate setting somebody has to switch on. This guide covers the default record on each platform, the three defaults that catch governance teams, and why the default falls short of EU AI Act Article 12.

AI Governance TeamPublished November 2, 202612 min read
Key takeaways
  • The managed platform surface is not a shadow AI problem. Every call is authenticated, billed and recorded. The problem is that what is recorded by default is the call, not its contents.
  • AWS states it outright: model invocation logging is disabled by default. The default CloudTrail entry for InvokeModel carries the model id and a null responseElements.
  • Agent invocations are CloudTrail data events, which are not logged by default and carry extra charges. An organisation can have full coverage of model calls and no record of its agents running.
  • Guardrail evaluations are data events too, so the record of your safety control working does not exist until a selector is configured.
  • Bedrock content logging is scoped by modality rather than by system, so a new workload inherits a choice made months earlier by someone else.
  • Article 12 asks for traceability sufficient to identify risk situations, support post-market monitoring and support operational monitoring. A record of call volume supports none of the three.
  • Turning content logging on creates a store of prompts and completions with its own retention, access and residency questions. The improvement and the exposure belong in the same decision.

Managed model platforms look like the easy part of an AI inventory. Nothing is hidden. Every call is authenticated, billed, attributed to a role and recorded somewhere. Compared with finding a coding agent on a laptop, enumerating what runs in Bedrock, Vertex or Foundry should be an afternoon's work.

It largely is, and that is the trap. The enumeration is easy and the record is thin. On all three platforms, what gets written by default is the fact of the call: which model, which principal, when, how many tokens. What was actually sent to the model, and what came back, is a separate setting that somebody has to turn on. On AWS the documentation says so in four words: model invocation logging is disabled by default.

This guide covers the third discovery surface, after the endpoint and the tool server. What the control plane records without being asked, what you have to enable per platform, the three defaults that catch governance teams in particular, and why the default record falls short of what the EU AI Act asks a high risk system to produce.

The surface that is not a shadow problem

Most AI discovery work is about finding things that were never declared. The managed platform surface is different in a way that changes the whole approach.

Nothing here is undeclared. Every invocation carries an authenticated identity, lands in a billed account, and generates a control plane event. There is no equivalent of a local model producing no traffic, or a tool server installed by one developer in an afternoon. If a team is using Bedrock, somebody provisioned it, and the account is in your organisation.

So the question is not "what exists". It is "what was recorded, and is that enough to answer the questions we will be asked". Three of those questions come up constantly, and the default configuration answers only the first.

  • Which models are in use, by whom, and how much? The control plane answers this by default on every platform.
  • What data went to them? Not recorded by default anywhere.
  • What did the system actually do, step by step, when something went wrong? Partially recorded at best, and for agents frequently not at all.

What the control plane records by default

AWS documents this more explicitly than the others, which makes it the clearest illustration of a pattern that holds across all three.

CloudTrail records management events by default, and Bedrock logs InvokeModel, InvokeModelWithResponseStream, Converse and ConverseStream as management events. So a Bedrock call appears in CloudTrail with no configuration at all. The documented example entry is worth reading closely, because it shows exactly where the record stops.

The shape of a default record. AWS's own example of an InvokeModel event carries requestParameters of {"modelId": "stability.stable-diffusion-xl-v0"} and responseElements of null, alongside the IAM user, the source IP, the user agent and the timestamp. That is a complete answer to who called which model when, and it contains nothing whatsoever about the prompt or the output.

This is a sensible default. Prompts and completions are high volume and frequently contain personal or confidential data, and a platform that logged them automatically would create a liability its customers did not ask for. The problem is not the default. It is that governance programmes routinely assume the record is richer than it is, and discover otherwise during an incident.

What you have to switch on, per platform

PlatformRecorded without configurationContent loggingDestinationNotable limit
Amazon Bedrock CloudTrail management events for the main invocation APIs: model, principal, time, token counts Model invocation logging, which the docs state is "disabled by default". Once on, it collects the full request data, response data and metadata CloudWatch Logs, Amazon S3, or both. Same account and Region only Bodies over 100 KB and binary data go to S3 as separate objects. Only the bedrock-runtime endpoint is covered
Google Vertex AI Cloud audit records of API activity Request-response logging, enabled explicitly through the SDK or a REST config call. Logs samples of requests and responses rather than all of them A BigQuery table Pairs larger than the BigQuery 10 MB row limit are not recorded. For fine tuned models the config sits on the endpoint
Microsoft Foundry Azure resource and access activity, with governance applied through Entra identity, role based access control, content filters, network isolation and Azure Policy Tracing and evaluation of agents and models, with built in monitoring dashboards that the documentation marks as preview Azure monitoring surfaces Foundry is the current name for what was Azure AI Studio and Azure AI Foundry, and the resource model changed with it, so older runbooks and queries need revisiting

Two observations worth carrying into a design review. First, every platform puts content logging behind an explicit decision, which means the decision has an owner and a date and should be recorded as a control. Second, the destinations are ordinary data stores you already govern: S3 buckets, CloudWatch log groups, BigQuery tables, Azure workspaces. Once content logging is on, prompt data inherits whatever retention, access control and residency rules those stores carry, which is a data protection review rather than an AI one.

Three defaults that catch governance teams

These are specific, documented and easy to miss, and each one breaks a governance assumption rather than a technical one.

  1. Agent invocations are data events, and data events are not logged by default
    AWS documents that all Agents for Amazon Bedrock Runtime operations, including InvokeAgent and InvokeInlineAgent, are recorded as data events, which CloudTrail "doesn't log by default". Capturing them requires advanced event selectors on the agent alias or inline agent resource types, and data events carry additional charges. The practical consequence is sharp: an organisation can have complete CloudTrail coverage of model calls and no record at all of its agents running, which is the opposite of the risk ordering most governance programmes would choose.
  2. Guardrail evaluations are data events too
    ApplyGuardrail, including guardrail evaluations made during model invocation, needs its own selector. Until that is configured, the record of your safety control doing its job does not exist. A guardrail you cannot evidence is a control you cannot claim, and this is a one line configuration difference.
  3. Logging scope is chosen by modality, not by system
    Bedrock invocation logging is configured by selecting modalities: text, image, embedding, video. The documentation notes that selecting a modality logs for all models supporting it as input or output. So the scope of your content logging is a property of the account configuration rather than of the system you meant to govern, and a new workload inherits whatever was chosen months ago by someone else.

A measurement caveat in the same documentation. Streaming invocations produce an extra CloudTrail event carrying token counts, with an eventType of AwsServiceEvent. AWS warns that it "isn't an API call", "isn't authorized, and it isn't evaluated by IAM policies or service control policies", and that counting both it and the original call "overstates your call volume". If your AI usage metrics come from a CloudTrail query, check whether they are filtered to AwsApiCall before anyone reports them to a board.

There is a second attribution caveat worth knowing before anyone builds a control report on guardrail data. Where more than one guardrail evaluates a request, AWS states plainly that "the order of entries isn't guaranteed, and the CloudTrail event doesn't identify which guardrail produced each assessment", and advises against using position to attribute an assessment. A report that attributes blocks to specific guardrails from this data is inventing the attribution.

Why the default record does not meet Article 12

None of this would matter much if the obligations only asked for usage metrics. They ask for more.

Article 12 of the EU AI Act requires high risk systems to be built for "the automatic recording of events (logs) over the lifetime of the system", with traceability appropriate to the intended purpose, covering events relevant to identifying situations where the system may present a risk, to post market monitoring under Article 72, and to operational monitoring under Article 26(5).

Set the default cloud record against that standard and the gap is specific rather than vague. Knowing that a role invoked a model two hundred times last Tuesday supports none of those three purposes. Identifying a risk situation requires knowing what the system was asked and what it answered. Post market monitoring requires being able to characterise behaviour over time, not call volume. Operational monitoring requires enough detail for the person exercising oversight to see what they are overseeing.

Article 19 then sets the retention floor at "at least six months" for logs "under their control", with the same duty falling on deployers under Article 26. Both halves of that phrase matter in a cloud context. Platform log retention defaults are frequently thirty days, which is below the floor. And "under their control" is a question with a different answer depending on whose account the workload runs in. Our guide to audit ready evidence covers the retention duties in full.

Building the cloud half of the inventory

The useful output is not a list of models. It is a set of answers that each tell you something you can act on.

  1. Enumerate accounts and projects before models
    The unit that hides things is the account, subscription or project, not the model. An organisation with a tidy production account and nine forgotten sandbox accounts has a discovery problem that no amount of model listing will reveal. Start from the billing hierarchy, which is complete by construction.
  2. Ask which principal calls each model, not which model is enabled
    Model access being enabled tells you nothing. The useful query groups invocations by the calling identity, because that maps to a team, a workload and an owner, which is what the register needs. Bedrock's invocation log captures the caller ARN automatically for exactly this purpose.
  3. Record the content logging decision per account, with a date and an owner
    Whether content logging is on is a governance control, not a platform setting. Write down what is enabled, which modalities, where it lands, for how long, and who decided. This is one of the cheapest pieces of real evidence available and almost nobody keeps it.
  4. Check agent and guardrail coverage separately
    Because these sit behind data event selectors rather than default logging, they need their own check. The question to ask the platform team is not "do we have CloudTrail" but "do we have selectors configured for agent and guardrail resource types, and since when".
  5. Reconcile against spend and against the register
    Cloud AI consumption is one of the clearest signals of a workload that exists and was never declared, and it arrives monthly whether or not anyone runs a scan. Our guide to AI spend as a governance signal covers the reconciliation.
  6. Set retention deliberately, per system
    Take the platform default as a starting point rather than an answer. Where the Act applies, six months is the floor and intended purpose sets the real period. Reconcile that with data protection retention rather than letting the shortest default decide.

The trade-offs nobody puts on the slide

Content logging creates a sensitive data store. Turning it on means prompts and completions, which routinely contain personal and confidential data, now sit in a bucket or a table. That store needs access control, retention, residency and a lawful basis. The governance improvement is real and so is the new exposure, and both belong in the same decision.

Volume and cost are not trivial. Data events carry additional charges on AWS, and full request and response bodies at scale are a meaningful storage line. Sampling, as Vertex does by design, reduces both and weakens any claim to complete traceability. That is a legitimate trade, and the choice should be recorded rather than inherited.

Platform coverage has edges. Bedrock invocation logging covers the bedrock-runtime endpoint and the docs are explicit that calls through other endpoints are not currently captured. Every platform has boundaries like this. Read them before claiming coverage, because the claim is what an auditor will test.

The platform is only one surface. A complete picture needs the endpoint, the tool servers and the applications as well. Cloud discovery produces confident, well attributed data about the portion of AI use that happens to run on a managed platform, and says nothing about the rest. Confident partial coverage is a more dangerous reporting position than acknowledged ignorance.

Frequently asked questions

Should we just turn content logging on everywhere?
Not as a default. Turn it on where the system carries obligations that require traceability, or where an incident would be unanswerable without it, and make that a recorded decision per account with a retention period and an access model. Turning it on everywhere produces a large store of sensitive data with no retention plan, which trades one governance problem for a worse one.
We use a gateway in front of the platform. Does that cover it?
For traffic routed through it, yes, and a gateway often gives you better attribution than the platform does. It will not see calls made directly to the platform API with credentials that bypass it, which is common in data science work and in anything deployed before the gateway existed. The platform record is the backstop that tells you whether the gateway sees everything.
Who owns this, the platform team or governance?
The platform team owns the configuration and governance owns the requirement. The failure pattern is governance asking for logs once, receiving an export, and never establishing that content logging stays on. Make the configuration state a reported control with a named owner rather than a one off request.
Does any of this apply if we only consume a vendor's hosted product?
Then the platform is the vendor's and the logs are under their control, which turns this into a contractual question rather than a configuration one. Ask what is logged, for how long, whether you can obtain it, and in what format. The deployer duties still land on you, and the Act's phrase about logs "under their control" is where that conversation starts.
How do we handle three platforms without three sets of tooling?
Normalise at the register rather than at the log. Trying to build a unified log schema across platforms is a large project that ages badly as each platform changes. Recording, per system, where its logs live, what they contain, how long they are kept and who controls them gives you the governance answer without the integration.
What about Databricks, Snowflake and the rest?
The same questions apply and the answers differ. This guide covers the three largest managed model platforms, which is not the same as covering every place a model runs. Treat the pattern as transferable and verify each platform's defaults in its own documentation rather than assuming.

Where this leaves you

The cloud surface is the one place in AI governance where the data is clean, attributed and complete, and that is exactly why the gap in it is easy to miss. The record is genuinely good at the question it answers. It just answers a narrower question than anyone assumes, and the wider answer is one configuration away in each platform, guarded by a sensible default that nobody is going to change for you.

The specific things worth checking this week are small. Whether content logging is on, and where it lands. Whether agent invocations are being recorded at all. Whether guardrail evaluations are. Whether the retention period clears six months. Whether anyone wrote down who decided each of those. None of it takes long, and all of it is the difference between a cloud inventory that enumerates and one that evidences.

Where a governance platform fits. Each cloud answers questions about itself, in its own schema, over its own retention window. What no platform produces is the layer that holds every system across all of them with an owner, a risk classification, the obligations it carries and the decisions made about its logging. Keeping that current across clouds, and producing it when someone asks, is what a platform such as Holistic AI is built to carry. The cloud tells you what ran. The register is what makes it accountable.

cloud-aiai-discoveryamazon-bedrockvertex-aimicrosoft-foundrycloudtrailloggingai-inventoryEU-AI-Actarticle-12agentic-aitechnical-controls
AI Governance Team
Editorial Team

Expert analysis and in-depth reporting from the AI Governance Core editorial team, covering enterprise AI compliance, ethics, and responsible AI practices.

Related analysis

How to Build an AI Model Inventory (and Why It's Step One)

How to Build an AI Model Inventory (and Why It's Step One)

AI Governance Team··11 min read
Endpoint AI Governance: The Controls Your Network Cannot See

Endpoint AI Governance: The Controls Your Network Cannot See

AI Governance Team··12 min read
Audit Ready: The Evidence an AI Governance Programme Has to Produce

Audit Ready: The Evidence an AI Governance Programme Has to Produce

AI Governance Team··14 min read