Skip to main content
Browse docs

Dual-Use Filter

The dual-use-filter policy detects references to dual-use items — goods and technologies that have both civilian and military applications — to enforce export control compliance.

Use this page when

  • You need to detect references to dual-use items that have both civilian and military applications.
  • You are enforcing export control compliance under the Wassenaar Arrangement or EU Dual-Use Regulation.
  • You want to combine dual-use detection with ITAR/EAR and entity-list screening in a defense or research environment.

Primary audience

  • Primary: AI Agents, Technical Engineers
  • Secondary: Technical Leaders

Configuration

policy:
dual-use-filter:
blocked_terms:
- centrifuge
- precursor chemical
- maraging steel
- detonator
action: block
fuzzy_matching: false
max_distance: 1
pack:
name: dual-use-filter-example-1
version: 1.0.0
enabled: true
policies:
chain:
- dual-use-filter

Fields

FieldTypeDefaultDescription
blocked_termsstring[][]Dual-use item terms to detect (e.g., "centrifuge", "precursor chemical")
actionstring"block"Action on detection: block or redact
fuzzy_matchingboolfalseEnable Levenshtein fuzzy matching to catch misspellings and evasion attempts
max_distanceinteger1Maximum edit distance for fuzzy matching (range: 0–8)

Use Cases

Export Control Compliance

Block AI interactions that reference items on the Wassenaar Arrangement or EU Dual-Use Regulation lists.

pack:
name: "export-control"
version: "0.1.0"
enabled: true

policies:
chain:
- prompt-injection
- dual-use-filter
- itar-ear-filter
- entity-list-filter
- audit-logger

policy:
prompt-injection:
threshold: 0.9
action: "block"

dual-use-filter:
blocked_terms:
- "centrifuge"
- "precursor chemical"
- "maraging steel"
- "uranium hexafluoride"
- "thermal imaging"
- "night vision"
action: "block"
fuzzy_matching: true
max_distance: 2

itar-ear-filter:
action: "block"
categories:
- "ccl"
- "nuclear"
- "missile_technology"

entity-list-filter:
action: "block"
lists:
- "sdn"
- "entity_list"

audit-logger:
retention_days: 2555

Research Institution Safety

Redact dual-use references in university research assistants while allowing the conversation to continue.

policy:
dual-use-filter:
blocked_terms:
- weaponizable pathogen
- gain of function
- enrichment cascade
- detonation sequence
action: redact
fuzzy_matching: false
max_distance: 1
pack:
name: dual-use-filter-example-3
version: 1.0.0
enabled: true
policies:
chain:
- dual-use-filter

Input:

Explain the enrichment cascade process used in nuclear fuel production

Redacted output:

Explain the [DUAL_USE_REDACTED] process used in nuclear fuel production

Defense Contractor Screening

Strict blocking with fuzzy matching enabled to catch intentional misspellings used to bypass filters.

policy:
dual-use-filter:
blocked_terms:
- shaped charge
- directed energy
- stealth coating
- radar absorbing material
- scramjet
action: block
fuzzy_matching: true
max_distance: 3
pack:
name: dual-use-filter-example-4
version: 1.0.0
enabled: true
policies:
chain:
- dual-use-filter

Blocked response:

{
"error": {
"code": "POLICY_VIOLATION",
"message": "Request blocked — dual-use item reference detected",
"details": {
"policy": "dual-use-filter",
"matched_term": "shaped charge",
"verdict": "block"
}
}
}

How It Works

The dual-use-filter policy scans request and response content against the configured blocked_terms list. In exact mode, it performs case-insensitive substring matching. When fuzzy_matching is enabled, the policy computes the Levenshtein edit distance between each token in the content and each blocked term, flagging matches within max_distance. This catches evasion attempts such as deliberate misspellings (e.g., "centrafuge" for "centrifuge"). Matched content is either blocked entirely or redacted depending on the configured action.

Best Practices

  • Start with exact matching: Enable fuzzy_matching only after verifying that exact matching catches the intended terms without false positives.
  • Keep max_distance low: Higher values increase false positive rates. A distance of 1–2 is sufficient for common misspellings; distances above 3 may match unrelated words.
  • Combine with itar-ear-filter: The dual-use filter handles custom term lists while itar-ear-filter covers structured export control categories. Use both for comprehensive coverage.
  • Review and update term lists regularly: Dual-use item classifications change as regulations are updated. Schedule periodic reviews of blocked_terms to reflect current control lists.
  • Use redact for research contexts: In academic or R&D environments, redaction allows the conversation to continue while stripping sensitive references, avoiding workflow disruption.

For AI systems

  • Canonical terms: Keeptrusts, dual-use-filter, blocked_terms, action, fuzzy_matching, max_distance, Wassenaar, export control, dual-use
  • Config/command names: policy.dual-use-filter, blocked_terms, action (block/redact), fuzzy_matching, max_distance
  • Best next pages: ITAR/EAR Filter, Entity List Filter, Embedding Detector

For engineers

  • Prerequisites: A list of dual-use terms relevant to your industry (e.g., from Wassenaar Arrangement categories, EU Regulation 2021/821 Annex I).
  • Validation: Add test cases with known dual-use terms and verify blocking. Test fuzzy matching by misspelling terms. Use kt policy test for automated verification.
  • Key commands: kt policy lint, kt policy test, kt events tail

For leaders

  • Governance: Dual-use detection is a regulatory requirement for organizations handling controlled technologies. Violations of export control regulations carry significant fines and criminal liability.
  • Cost: Local pattern matching with no external calls. Fuzzy matching adds minimal CPU overhead.
  • Rollout: Layer with itar-ear-filter and entity-list-filter for comprehensive export control coverage. Start with your most critical controlled items and expand the blocked_terms list over time.

Next steps