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. The pack is always one document per tenant - in a combined
multi-tenant dashboard ("All tenants"), switch to the member tenant first and
generate a pack for each member you need to evidence.
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. An optional
framework parameter (a registry key such as dora) scopes the legend and
sections to one framework. 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.9.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",
"PL-AI-Act",
"ISO42001-A.3",
"KSC-access-control"
],
"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 and already spans the EU AI Act, NIS2, GDPR, the Polish KSC and KRiBSI acts, DORA, ISO/IEC 42001, ISO/IEC 27001, SOC 2, NIST CSF 2.0 and HIPAA - a future framework arrives 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, and its accountable person - native Microsoft owner/sponsor or a 1Security assignment, provenance kept | EU-AI-Act-26, PL-AI-Act, ISO42001-A.3, KSC-access-control |
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, DORA-28, KSC-access-control |
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)(b), KSC-incident-detection |
lifecycle_events | Agent lifecycle audit events in the covered period: create, update, publish, deploy, undeploy, block, unblock | EU-AI-Act-26, NIS2-21(2)(i), KSC-access-control |
threat_events | AI threat detections in the covered period - prompt injection detections surfaced from per-interaction threat flags | NIS2-21(2)(b), DORA-10, ISO42001-A.6, KSC-incident-detection |
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-transparency, ISO42001-A.6 |
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), DORA-28, ISO42001-A.10, KSC-access-control |
ai_app_reach | Every AI-classified application (Copilot-family, own-model, hybrid) with its current data reach: files, sensitive and labeled subsets, reachable data types, users including external, plus accountability provenance | EU-AI-Act-26, NIS2-21(2)(d), GDPR-32, DORA-28, ISO42001-A.7, ISO42001-A.10, KSC-access-control |
ai_policy_scans | Policy scan snapshots whose subject is an AI resource (app or agent) in the covered period | EU-AI-Act-26, NIS2-21(2)(b), DORA-10, ISO42001-A.6, KSC-incident-detection |
ai_detections | Detection episodes on AI resources in the covered period, each entity judged against its own baseline | NIS2-21(2)(b), DORA-10, ISO42001-A.6, KSC-incident-detection |
data_restrictions | Sensitive data types declared restricted (monitored / no AI access / no access): who declared them, since when, current exposure (files, users, apps, AI agents), how much of the carrying data a protecting label already covers, and who actually read carriers since the declaration - including external users and AI | EU-AI-Act-26, GDPR-32, DORA-9, ISO42001-A.7, KSC-access-control |
restriction_history | The declare/modify/lift trail behind each restriction in the covered period, with the exposure snapshot taken at each event | EU-AI-Act-26, GDPR-32, DORA-9, ISO42001-A.7 |
fria_systems | FRIA pre-fill (Art. 27): one row per agent with its purpose from captured instructions, oversight source, users and files reach, knowledge sources, sensitive and restricted types reachable, and incidents in the period | EU-AI-Act-27 |
fria_summary | FRIA pre-fill (Art. 27): organization-level answers - oversight coverage, restriction counts by level, active AI detectors, incident totals, retention target | EU-AI-Act-27 |
remediation | Remediation actions in the covered period, across both trails: the staged ledger with approval rungs and time-to-remediate, plus legacy automation executions | EU-AI-Act-26, NIS2-21(2)(b), GDPR-32 |
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)", "PL-AI-Act-logs", "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
MCP Server
Connect AI assistants and agent frameworks to 1Security over the Model Context Protocol - the same read-only data as the REST API, exposed as typed tools with the same keys, scopes, and limits.
Today
The first screen after sign-in - what deserves your attention on this tenant today, ranked by risk and urgency, with a five-minute band you can clear before your first coffee.