---
title: "ListAgentAuditLogs"
method: GET
path: "/v1/namespaces/{tenant_meta.namespace}/agent-audit-logs"
tags: ["AgentAuditLogService"]
---

# ListAgentAuditLogs

`GET /v1/namespaces/{tenant_meta.namespace}/agent-audit-logs`

## Request

- Base URL: `https://api.endorlabs.com`
- URL: `https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/agent-audit-logs`
- Auth: none declared

Lists all agent audit logs in a given namespace.

## Path parameters

- `tenant_meta.namespace` string, required

## Query parameters

- `list_parameters.filter` string
- `list_parameters.page_token` integer
- `list_parameters.page_size` integer
- `list_parameters.action` string
- `list_parameters.mask` string
- `list_parameters.traverse` boolean
- `list_parameters.sort.path` string
- `list_parameters.sort.order` 'SORT_ENTRY_ORDER_UNSPECIFIED' | 'SORT_ENTRY_ORDER_ASC' | 'SORT_ENTRY_ORDER_DESC'
- `list_parameters.count` boolean
- `list_parameters.group.aggregation_paths` string
- `list_parameters.group.show_aggregation_uuids` boolean
- `list_parameters.group.unique_count_paths` string
- `list_parameters.group.unique_value_paths` string
- `list_parameters.ci_run_uuid` string
- `list_parameters.page_id` string
- `list_parameters.group_by_time.aggregation_paths` string
- `list_parameters.group_by_time.show_aggregation_uuids` boolean
- `list_parameters.group_by_time.interval` 'GROUP_BY_TIME_INTERVAL_UNSPECIFIED' | 'GROUP_BY_TIME_INTERVAL_YEAR' | 'GROUP_BY_TIME_INTERVAL_QUARTER' | 'GROUP_BY_TIME_INTERVAL_MONTH' | 'GROUP_BY_TIME_INTERVAL_WEEK' | 'GROUP_BY_TIME_INTERVAL_DAY' | 'GROUP_BY_TIME_INTERVAL_HOUR' | 'GROUP_BY_TIME_INTERVAL_MINUTE' | 'GROUP_BY_TIME_INTERVAL_SECOND'
- `list_parameters.group_by_time.group_size` integer
- `list_parameters.group_by_time.start_time` string, date-time
- `list_parameters.group_by_time.end_time` string, date-time
- `list_parameters.group_by_time.mode` string
- `list_parameters.group_by_time.aggregation_value_field` string
- `list_parameters.group_by_time.aggregation_operator` string
- `list_parameters.disable_pagination` boolean

## Response `200`

A successful response.

- V1ListAgentAuditLogsResponse: Response to request to list agent audit logs.
  - `count_response` V1CountResponse: Response to a list count request.
    - `count` integer: Number of objects matching the given list parameters.
  - `group_response` V1GroupResponse: Response to a list group request.
    - `groups` object: Map indexed by values of the fields specified in aggregation_paths, for example, {"[{"key":"meta.kind","value":"Project"}]": { "aggregation_count": { "count": 1649 } } }.
  - `list` V1ListAgentAuditLogsResponseList: A page of agent audit logs.
    - `objects` V1AgentAuditLog[]: The agent audit logs in this page.
      - `meta` V1Meta, required: Common fields for all Endor Labs resources.
        - `annotations` object: Annotations can be used to attach metadata to a resource message. Annotation values can be small or large, structured or unstructured, and may include characters not permitted by labels. The keys may contain alphanumerics, underscores (_), dots (.) and dashes (-). The values of an annotation must be 16384 bytes or smaller.
        - `create_time` string, date-time: Time the resource was created. Format: 2017-01-15T01:30:15.01Z RFC 3339: https://www.ietf.org/rfc/rfc3339.txt.
        - `created_by` string: Name and authentication source of the user who created the object, for example, ewok@endor.ai@google@api-key.
        - `description` string: Resource description. Must be less than 1024 bytes.
        - `index_data` V1IndexData: IndexData is used to index the resource for search. It's an internal object.
          - `data` string[]
          - `search_score` number, float: search_score is the score of the resource for search. Internal use only.
          - `tenant` string
          - `will_be_deleted_at` string, date-time: Time that the resource will be deleted.
        - `kind` string: Resource kind, for example, HelloResponse. Auto-generated using the protobuf message proto.MessageName().Name().
        - `name` string, required: Resource name. Must be 63 characters or less.
        - `parent_kind` string: Parent object resource kind, for example, Project.
        - `parent_uuid` string: Parent object UUID.
        - `references` object: Map of objects referenced in a query API.
        - `tags` string[]: List of tags attached to the resource. Tags can be used to select objects and to find collections of objects that satisfy certain conditions. A tag must be 255 characters or less.
        - `update_time` string, date-time: Time the resource was last updated. Note: Updated on all create/patch/delete operations. Format: 2017-01-15T01:30:15.01Z RFC 3339: https://www.ietf.org/rfc/rfc3339.txt.
        - `updated_by` string: Name and authentication source of the last user who updated the object, for example, vulnerabilityingestor@endor.ai@x509.
        - `upsert_time` string, date-time: Time the resource was last upserted. Note: create_time is only set the first time the resource is created. upsert_time is set every time the resource is upseted. Format: 2017-01-15T01:30:15.01Z RFC 3339: https://www.ietf.org/rfc/rfc3339.txt.
        - `version` string: Message version.
      - `spec` V1AgentAuditLogSpec, required: Object specific data for AgentAuditLog. The field numbers are the ones the edge publisher has always used, so a captured call keeps its wire encoding. Actor: who made the call.
        - `agent_client_id` string: Issuer-verified cryptographic client/publisher id. Trust and dashboards key on this, not on agent_identity. Empty for non-OIDC ingress.
        - `agent_id` string: Stable agent catalog id, recorded verbatim from the token. The join key to the agent catalog and telemetry rollups. Never derive it by splitting agent_identity — ids like "system:remediation-agent" carry no @version.
        - `agent_identity` string: Human-readable {name}@{sha} agent label. Self-asserted, so spoofable: never use it as a trust signal, and never split it to derive agent_id. "unknown" when the caller is agentic but unattributed.
        - `ai_feature` string: AI feature the call is attributable to, when known.
        - `authz_decision` string: Classifies the final status code of the call: "denied" for PermissionDenied or Unauthenticated, and "allowed" for every other code. "allowed" does not show that authorization checked the call. A consumer that needs that must use namespace_verified.
        - `claims` string[]: Raw identity claims carried on the token.
        - `correlation_id` string: Join key to the client-side hook/session stream, for later stitching of backend access to on-device behavior.
        - `error` string: Response error message, truncated; never carries payloads or secrets.
        - `ingress` string: How the token was minted, e.g. "oidc", "api_key", "endorctl_agent_session".
        - `is_agent` boolean: Set by the token issuer for any agent-minted token, not asserted by the caller. The primary signal that a call originated from an agent. Unset means origination was never recorded, not that the caller is non-agentic.
        - `is_verified_publisher` boolean: True only when agent_client_id is on the curated verified-publisher allowlist; false for self-attested API-key agents and unknown client ids. The trust gate dashboards key on — co-display it with the spoofable agent_identity, never that label alone. Unset means publisher status was never recorded, which a forensic query must not read as false.
        - `mcp_profile` string: MCP tool profile in effect (e.g. "developer", "appsec"); empty when none.
        - `mutability` string: Read or write capability the token was granted (agents are read-only today). Records what the call actually ran with.
        - `namespace` string: The namespace the call targeted, as the caller supplied it. Capture happens before authorization, so for a denied or rejected call this is the only record of what the agent tried to reach, and it may name a namespace that does not exist. When namespace_verified is true, authorization approved this namespace.
        - `namespace_verified` boolean: True only when authorization evaluated the caller's policies against namespace and granted the call. False for the oss and system namespaces, for kinds that skip authorization, for a call rejected before authorization ran, and for a call that no authorization interceptor saw. Unset means the publisher did not record it, which a consumer must read as false. A consumer that files the record under namespace must require this field. It must not use authz_decision for that: capture runs outer to authorization, so "allowed" also covers calls that authorization never checked.
        - `on_behalf_of` string: The human principal the agent acts for, set at token issuance when the agent proves human delegation. Empty when no live human is in the loop.
        - `operation` 'OPERATION_UNSPECIFIED' | 'OPERATION_READ' | 'OPERATION_LIST' | 'OPERATION_CREATE' | 'OPERATION_UPDATE' | 'OPERATION_DELETE' | 'OPERATION_UPSERT' | 'OPERATION_EXECUTE': Operation is the coarse verb the RPC performs, derived from the gRPC method name. LIST stays distinct from READ so collection scans can be told apart from point reads. - OPERATION_UNSPECIFIED: The method did not map to a known verb. - OPERATION_READ: Single-resource read (Get/Read/Query/Describe). - OPERATION_LIST: Collection query (List). - OPERATION_CREATE: Create a resource. - OPERATION_UPDATE: Mutate an existing resource (Update/Patch). - OPERATION_DELETE: Delete a resource. - OPERATION_UPSERT: Create-or-update in a single call. - OPERATION_EXECUTE: Action RPC with no CRUD shape, e.g. a scan or evaluation.
        - `remote_ip` string: Caller's remote address.
        - `request_id` string: Correlates the call with request logs.
        - `resource_kind` string: Endor resource kind the RPC operates on, e.g. "Finding".
        - `resource_uuid` string: Targeted object uuid when resolvable from the request; empty otherwise.
        - `rpc_method` string: Full gRPC method, e.g. "/internal.endor.ai.endor.v1.FindingService/ListFindings".
        - `sample_weight` integer: Number of like events this row represents when per-method sampling is on. Unset means the row is fully captured; a consumer summing this field must treat unset as 1 rather than 0, or fully-captured rows drop out of the total.
        - `scopes` string[]: Coarse permission grant: "customer-full" | "oss-readonly".
        - `session` string: Per-run agent-session id shared by every call in one agent run — the key that correlates what a single run did. Empty for non-agent traffic.
        - `status_code` integer: gRPC status code of the response; 0 is OK. Unset only when the call returned no status, which a consumer must not read as OK.
        - `tenant_uuid` string: Root tenant the call is scoped to; empty for oss-readonly or unbound calls. The envelope records namespaces only, so this is the one in-row record of the tenant id.
        - `timestamp` string, date-time: When the edge observed the call.
        - `token_namespace` string: The namespace the caller's token is restricted to, read from the verified token and never from the request. Usually empty, because most tokens carry no such restriction: the field records a deliberate downscope, not the caller's identity. A consumer deciding where to file the record prefers this field. When it is empty, namespace is a safe substitute only if namespace_verified is true, because only then did authorization verify that the caller may reach the namespace it named. Otherwise namespace is unverified caller input, so the record is unattributable and must not be filed under it.
        - `tool_name` string: Originating MCP/agent tool when attributable (e.g. "scan"); empty otherwise.
        - `trust_zone` string: Trust zone "Z1".."Z4", derived from ingress and claims.
      - `tenant_meta` V1TenantMeta: Tenant related data for the tenant containing the resource.
        - `namespace` string, required: Namespaces are a way to organize organizational units into virtual groupings of resources. Namespaces must be a fully qualified name, for example, the child namespace of namespace "endor.prod" called "app" is called "endor.prod.app".
      - `uuid` string: The UUID of the agent audit log.
    - `response` V1ListResponse: Response to a list request.
      - `next_page_id` string: The UUID of last message retrieved.
      - `next_page_token` integer: Pagination token that can be used to retrieve the next page of results.

## Other responses

- `default`: An unexpected error response.

## Changes

- **2026-11-03** `4acd9fe15140`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/endorlabs/apis/endor-labs-rest-api-reference/changes/v1/namespaces/:tenant_meta.namespace/agent-audit-logs/get.md)

---

[API](https://skmtc.dev/endorlabs/apis/endor-labs-rest-api-reference.md) - [All operations](https://skmtc.dev/endorlabs/apis/endor-labs-rest-api-reference/llms.txt) - [OpenAPI document](https://skmtc.dev/endorlabs/apis/endor-labs-rest-api-reference/revisions/4acd9fe15140?raw)
