ISO/IEC 42001
Map Inkog findings to ISO/IEC 42001:2023 AI Management System requirements.
Rules that carry an ISO/IEC 42001 mapping stamp compliance_mapping.iso_42001_clauses on every finding they produce, in the CLI JSON output, the REST API, and the MCP server. Agent Capability Surface gaps carry Annex A control references. Inkog does not generate an AI Management System (AIMS) clause-by-clause certification report; the matrix below lists exactly which clauses findings reference today.
Clause and Annex A control titles follow the published structure of ISO/IEC 42001:2023. Rule-to-clause assignments were reviewed on 2026-09-04: security rules map to 8.2/8.3 (risk assessment and treatment) and A.6.2.4 (verification and validation); oversight rules to 8.4 and A.9.2; resource rules to A.4.5; logging rules to A.6.2.8 and 9.1; supply chain to A.10.3; data rules to A.7.x.
ISO/IEC 42001 is the first international standard for AI Management Systems. It provides a framework for establishing, implementing, and improving AI governance within organizations.
Overview
ISO/IEC 42001:2023 specifies requirements for an AI Management System (AIMS). Inkog helps organizations meet technical security requirements by detecting logic flaws and security risks in AI agent code, and tags each finding with the clauses it bears on.
Coverage Matrix
ISO/IEC 42001:2023. 36 of 36 rules carry a clause mapping. Generated from the rule engine’s metadata; do not edit by hand.
| Clause | Title | Rules whose findings reference it |
|---|---|---|
| 8.2 | AI risk assessment | command_injection, context_exhaustion, cross_tenant, data_poisoning, excessive_permissions, exec_eval, hardcoded_credentials, infinite_loop, logging_sensitive_data, missing_authz, missing_rate_limits, output_validation, path_traversal, pii_filter_wiring, prompt_injection, prompt_template, rag_overfetching, recursive_tool_calling, skill_autonomy_abuse, skill_cross_origin, skill_excessive_permissions, skill_supply_chain, skill_tool_poisoning, sql_injection, ssrf, supply_chain, system_prompt_leak, token_bombing, token_validation, unsafe_deserialization, unsafe_env_access, unsigned_messages |
| 8.3 | AI risk treatment | command_injection, context_exhaustion, cross_tenant, excessive_permissions, exec_eval, hardcoded_credentials, infinite_loop, logging_sensitive_data, missing_authz, missing_rate_limits, output_validation, path_traversal, pii_filter_wiring, prompt_injection, prompt_template, recursive_tool_calling, skill_excessive_permissions, skill_tool_poisoning, sql_injection, ssrf, system_prompt_leak, token_bombing, token_validation, unsafe_deserialization, unsafe_env_access, unsigned_messages |
| 8.4 | AI system impact assessment | goal_conflict_detection, missing_oversight, overreliance |
| 9.1 | Monitoring, measurement, analysis and evaluation | missing_audit_logging |
| A.4.5 | Annex A: System and computing resources | context_exhaustion, infinite_loop, missing_rate_limits, recursive_tool_calling, token_bombing |
| A.6.2.4 | Annex A: AI system verification and validation | command_injection, cross_tenant, exec_eval, hardcoded_credentials, output_validation, path_traversal, pii_filter_wiring, prompt_injection, prompt_template, skill_cross_origin, skill_tool_poisoning, sql_injection, ssrf, system_prompt_leak, unsafe_deserialization, unsafe_env_access, unsigned_messages |
| A.6.2.6 | Annex A: AI system operation and monitoring | context_exhaustion, infinite_loop, missing_oversight, recursive_tool_calling |
| A.6.2.8 | Annex A: AI system recording of event logs | logging_sensitive_data, missing_audit_logging |
| A.7.2 | Annex A: Data for development and enhancement of AI system | rag_overfetching |
| A.7.4 | Annex A: Quality of data for AI systems | data_poisoning |
| A.7.5 | Annex A: Data provenance | data_poisoning |
| A.9.2 | Annex A: Processes for responsible use of AI systems | excessive_permissions, goal_conflict_detection, missing_authz, missing_oversight, overreliance, skill_autonomy_abuse, skill_excessive_permissions, token_validation |
| A.10.3 | Annex A: Suppliers | skill_supply_chain, supply_chain |
Agent Capability Surface gaps reference Annex A controls by the control that is missing:
| Missing control | Annex A reference |
|---|---|
human_approval | A.6.2.6 (AI system operation and monitoring), A.9.2 (Processes for responsible use of AI systems) |
authorization_check | A.6.2.4 (AI system verification and validation), A.9.2 (Processes for responsible use of AI systems) |
audit_log | A.6.2.8 (AI system recording of event logs), 9.1 (Monitoring, measurement, analysis and evaluation) |
rate_limit | A.4.5 (System and computing resources), A.6.2.6 (AI system operation and monitoring) |
Read the clause references from scan output:
inkog -path ./agents -output json \
| jq '[.server_findings[] | select(.compliance_mapping.iso_42001_clauses) | {id: .pattern_id, iso: .compliance_mapping.iso_42001_clauses}]'The clause sections below are conceptual guidance on how findings support each requirement; they are not a certification checklist.
Clause 6.1: Actions to Address Risks
“The organization shall determine the risks and opportunities that need to be addressed.”
Inkog Support:
Inkog automatically identifies risks in AI agent code:
| Risk Category | Inkog Detection | Severity |
|---|---|---|
| Resource exhaustion | Infinite loops, token bombing | CRITICAL |
| Data leakage | Cross-tenant vulnerabilities | CRITICAL |
| Unauthorized actions | Unsafe code execution | CRITICAL |
| Prompt manipulation | Prompt injection patterns | HIGH |
| System availability | Memory overflow, unbounded operations | HIGH |
Evidence Collection:
# Generate risk assessment report
inkog scan ./agents -output json > risk-assessment.json
# Extract risk summary
cat risk-assessment.json | jq '{
total_risks: .all_findings | length,
critical: [.all_findings[] | select(.severity == "CRITICAL")] | length,
high: [.all_findings[] | select(.severity == "HIGH")] | length,
risk_categories: [.all_findings[].pattern] | unique
}'Clause 6.2: AI Objectives and Planning
“The organization shall establish AI objectives at relevant functions.”
Security Objectives Mapping:
| Objective | Inkog Metric | Target |
|---|---|---|
| Zero critical vulnerabilities | critical_count | 0 |
| Reduce high severity | high_count trend | ↓ 20% quarterly |
| Full coverage | files_scanned | 100% of AI code |
| Continuous monitoring | CI/CD integration | All PRs scanned |
Tracking Example:
# Track objectives over time
inkog scan . -output json | jq '{
date: now | strftime("%Y-%m-%d"),
critical_count: .critical_count,
high_count: .high_count,
files_scanned: .files_scanned,
compliant: (.critical_count == 0)
}' >> objectives-tracking.jsonlClause 8.2: AI Risk Assessment
“The organization shall implement an AI risk assessment process.”
Risk Assessment Workflow:
- Identify - Inkog scans detect logic flaws and security risks
- Analyze - Severity levels (CRITICAL/HIGH/MEDIUM/LOW)
- Evaluate - CWE and CVSS scoring
- Treat - Remediation guidance per finding
Finding to Risk Mapping:
| Inkog Finding | CWE | CVSS | Risk Level |
|---|---|---|---|
| Infinite Loop | CWE-835 | 7.5 | High |
| Token Bombing | CWE-400 | 9.0 | Critical |
| Code Execution | CWE-94 | 9.8 | Critical |
| Prompt Injection | CWE-77 | 8.0 | High |
| Data Exposure | CWE-200 | 7.0 | High |
Clause 8.4: AI System Impact Assessment
“The organization shall implement security controls for AI systems.”
Control Categories:
8.4.1 Secure Development
Inkog enforces secure coding practices:
# No iteration limits
agent = Agent(tools=tools)
agent.run(user_input)# Bounded execution
agent = Agent(
tools=tools,
max_iterations=15,
timeout=60
)
agent.run(validated_input)8.4.2 Input Validation
# Inkog detects unvalidated inputs
# Finding: "User input directly in LLM prompt"
# Remediation: Implement input validation
def compliant_handler(user_input):
validated = sanitize_input(user_input)
validate_format(validated)
return process_query(validated)8.4.3 Output Handling
# Inkog detects unsafe output handling
# Finding: "LLM output used without validation"
# Remediation: Validate before use
def compliant_output_handler(llm_response):
parsed = parse_response(llm_response)
validated = validate_output_schema(parsed)
sanitized = sanitize_for_display(validated)
return sanitizedClause 9.1: Monitoring, Measurement, Analysis
“The organization shall determine what needs to be monitored.”
Continuous Monitoring Setup:
# GitHub Actions for continuous monitoring
name: ISO 42001 Compliance Scan
on:
schedule:
- cron: '0 0 * * *' # Daily
push:
branches: [main]
jobs:
compliance-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Inkog Scan
run: |
npx -y @inkog-io/cli scan . -output json > compliance-report.json
- name: Check Compliance
run: |
CRITICAL=$(jq '[.server_findings[] | select(.severity == "CRITICAL")] | length' compliance-report.json)
if [ "$CRITICAL" -gt 0 ]; then
echo "Non-compliant: $CRITICAL critical findings"
exit 1
fi
echo "Compliant: No critical findings"
- name: Archive Evidence
uses: actions/upload-artifact@v4
with:
name: iso42001-evidence-${{ github.run_number }}
path: compliance-report.jsonClause 10.2: Continual Improvement
“The organization shall continually improve the suitability and effectiveness of the AIMS.”
Improvement Tracking:
# Track improvement over releases
for version in v1.0 v1.1 v1.2; do
git checkout $version
inkog scan . -output json | jq "{
version: \"$version\",
total: .findings_count,
critical: .critical_count,
high: .high_count
}"
done | jq -s '.'Expected Output:
[
{"version": "v1.0", "total": 15, "critical": 3, "high": 5},
{"version": "v1.1", "total": 8, "critical": 1, "high": 3},
{"version": "v1.2", "total": 4, "critical": 0, "high": 2}
]Generating Evidence
Use scan results as evidence for ISO 42001 audits:
# Generate scan results
inkog -path ./agents -output json > scan-results.json
# View summary
cat scan-results.json | jq '{
files_scanned: .files_scanned,
findings_count: .findings_count,
critical_count: .critical_count,
high_count: .high_count
}'A dedicated evidence package generator is on our roadmap. Currently, use JSON output for audit documentation.
Compliance Checklist
| Requirement | Inkog Feature | Status |
|---|---|---|
| Risk identification | Static analysis scanning | ✓ |
| Risk severity assessment | CRITICAL/HIGH/MEDIUM/LOW | ✓ |
| CWE classification | CWE IDs per finding | ✓ |
| Remediation guidance | Fix suggestions | ✓ |
| Continuous monitoring | CI/CD integration | ✓ |
| Evidence generation | JSON/HTML reports | ✓ |
| Trend analysis | Historical comparison | ✓ |
Best Practices
- Integrate into CI/CD for continuous compliance
- Archive all scan results as audit evidence
- Set zero tolerance for critical findings
- Track trends quarter-over-quarter
- Document remediation for each finding
- Review periodically with security team