Compliance Evidence Export
Pull a dated, defensible JSON evidence pack for your AI agent governance - inventory, permissions, activity trail, and a log retention attestation, with every section mapped to the EU AI Act, NIS2, and Polish KSC and AI act articles it evidences.
When a regulator, auditor, or enterprise customer asks "show me your AI agent governance", the answer should not be a screenshot tour. The compliance evidence export produces one dated JSON document - the evidence pack - that captures what agents run in your tenant, what they are allowed to touch, what they actually did, and how long the activity trail is retained.
The pack is built for the regulations EU organizations are answering to today:
- EU AI Act, Article 26 (deployer duties, applicable December 2, 2027 but already requested in procurement): an inventory of the AI systems in use and the oversight arrangements around them, including Article 26(6) log retention of at least six months under the deployer's control.
- EU AI Act, Article 50 (transparency, in force since August 2, 2026): which agents interact with people, and what disclosure state you can attest for each - name, publisher, whether its instructions are captured.
- NIS2 and the Polish KSC act (as amended, in force since April 3, 2026): supply chain evidence - third-party apps and agents with access, their permission grants, and the activity trail behind them.
- The Polish AI act (Dz.U. 2026 poz. 1003): the same inventory and oversight evidence; section labels and framework names are included in Polish alongside English.
Getting the pack
From the dashboard: open Agents and choose Compliance evidence.
The pack is generated on the spot and downloads as a JSON file named
1security-agent-evidence-<date>.json. Generating and downloading it is
admin-only.
From the API: auditors and GRC tooling can pull the identical document without dashboard access:
curl -H "Authorization: Bearer $ONESEC_API_KEY" \
"https://api.1security.ai/api/v1/evidence/agents"Requires a key with the evidence:read scope - see the
API reference for keys, authentication, and rate
limits. Optional from and to query parameters (ISO-8601) bound the covered
activity period; the default window is the trailing 183 days. The response is
{ "data": <pack> } with no pagination - the pack is one document.
Both paths produce the same document, so the pack an auditor pulls through the API matches the one your admin downloaded byte for byte.
What is in the pack
{
"packType": "1security.agent_evidence_pack",
"version": "1.0.0",
"metadata": {
"tenantId": "01H…",
"tenantName": "Contoso",
"azureTenantId": "…",
"generatedAt": "2026-09-02T09:15:00.000Z",
"generatedBy": "admin@contoso.com",
"coveredFrom": "2026-03-03T09:15:00.000Z",
"coveredTo": "2026-09-02T09:15:00.000Z",
"retention": { "...": "see Retention attestation below" }
},
"frameworks": [
{ "id": "EU-AI-Act-26(6)", "name": "…", "namePl": "…", "reference": "…" }
],
"sections": [
{
"key": "inventory",
"label": "AI agent inventory",
"labelPl": "Inwentarz agentów AI",
"frameworks": ["EU-AI-Act-26", "EU-AI-Act-50", "PL-AI-Act", "KSC"],
"rowCount": 42,
"truncated": false,
"rows": ["…"]
}
]
}Three parts:
metadata- who generated the pack, when, for which tenant, the covered period, and the retention attestation.frameworks- the legend: every framework id used anywhere in the pack, with its full name in English and Polish and the legal reference. The list is open by design - future mappings (DORA, ISO 42001) arrive as new legend entries and new ids on sections, never as a format change.sections- the evidence itself. Every section carries aframeworksarray naming exactly which articles it evidences, so an auditor can walk from an article to the data that answers it without interpreting anything.
Sections and what each one evidences
| Section | What it contains | Evidences |
|---|---|---|
inventory | Every discovered agent: name, blueprint, publisher, how it runs, who created it and in which tool, access channels, permission counts, whether instructions are captured | EU-AI-Act-26, EU-AI-Act-50, PL-AI-Act, KSC |
permissions | Atomic permission grants per agent - value, kind, source (direct, inherited, declared), admin consent, tenant-wide reach, write access | NIS2-21(2)(d), EU-AI-Act-26, KSC |
activity_summary | Per-agent activity rollup for the covered period: event count, distinct human actors, first and last event | EU-AI-Act-26(6), NIS2-21(2)(g), KSC |
lifecycle_events | Agent lifecycle audit events in the covered period: create, update, publish, deploy, undeploy, block, unblock | EU-AI-Act-26, NIS2-21(2)(g), KSC |
threat_events | AI threat detections in the covered period - prompt injection detections surfaced from per-interaction threat flags | NIS2-21(2)(g), KSC |
instruction_changes | Instruction drift events: each time an agent's captured system prompt changed between imports | EU-AI-Act-26, EU-AI-Act-50, PL-AI-Act |
store_shelf | Agents available for any user to install but not deployed - the "one click from live" state, from the registry export | EU-AI-Act-26, NIS2-21(2)(d) |
third_party_apps | Applications with granted access: publisher, verification, permission and per-resource grant counts, tenant-wide reach, admin consent, AI classification | NIS2-21(2)(d), KSC |
Every section reports rowCount and truncated. Sections are capped (2,000
rows for most, 10,000 for permissions) so the pack stays a document rather
than a database dump; truncated: true tells the reader the cap was hit, and
narrowing the covered period with from/to brings the rest into view.
Retention attestation
Article 26(6) of the EU AI Act requires deployers to keep automatically generated logs for at least six months. The pack does not assert a policy - it measures the actual state:
"retention": {
"frameworks": ["EU-AI-Act-26(6)", "KSC"],
"retentionTargetDays": 183,
"retentionTargetMet": true,
"logHistoryDays": 412,
"oldestLogAt": "2025-07-18T06:02:11.000Z",
"newestLogAt": "2026-09-02T09:14:48.000Z",
"tenantConnectedAt": "2025-07-17T14:30:00.000Z"
}retentionTargetMet is true when the oldest retained activity log row is at
least 183 days old. A tenant connected to 1Security more recently than 183
days ago will report retentionTargetMet: false even though nothing was
deleted - tenantConnectedAt is included precisely so the reader can tell a
short history apart from a retention gap.
The pack is evidence output, not legal advice. It shows what runs, what it can reach, and what it did - your compliance team maps that onto your own obligations and risk classification.
Stability
The pack is a stable contract, like the rest of the public API: fields may be
added over time, existing fields are not removed or renamed without notice,
and version in the pack identifies the generator that produced it. Store the
downloaded packs as-is - a dated series of packs is itself evidence of ongoing
oversight.
Next
API Reference
The read-only REST API for pulling 1Security detections, Microsoft security alerts, audit logs, policy scans, and the notification log into your own tools - SIEM, SOC, or MSSP.
Activities
Watch the extremes of your Microsoft 365 collaboration - the biggest activity spikes and the completely dormant - to catch threats, benchmark usage, and reclaim wasted spend, sometimes in as little as one hour.