Observed since 20 Oct, 18:25 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Config integrity verification for AI agents. Implements ACRF-06 defense pattern.
Config integrity verification for AI agents. Implements the ACRF-06 (Config Files as Execution Vectors) defense pattern.
Part of the ACRF framework: https://github.com/kannasekar-alt/ACRF PyPI: https://pypi.org/project/acrf-config-guard/ Presented at RSA Conference 2026.
No Docker. No setup. Just Python 3.10+.
Step 1 - Install:
pip install acrf-config-guard
Step 2 - Sign your config at deployment time:
from acrf_config_guard import sign_config
import os
sign_config("config.json", secret_key=os.environ["ACRF_CONFIG_SECRET"])
Step 3 - Load it safely at runtime:
from acrf_config_guard import load_safe
import os
config = load_safe("config.json", secret_key=os.environ["ACRF_CONFIG_SECRET"])
If the config file has been modified between sign and load, load_safe raises ConfigIntegrityError. Your application fails closed.
Modern AI agents read configuration files at startup. Tool lists. Auto-approve settings. MCP server connections.
If an attacker modifies the config file between deployment and load, the agent silently picks up the malicious behavior. No exploit needed. No code injection. Just a JSON edit.
This is ACRF-06: config files as execution vectors.
acrf-config-guard makes config files tamper-evident. A signed config that has been modified will not load.
Set your secret once:
export ACRF_CONFIG_SECRET="your-secret-from-vault"
Sign:
acrf-config-guard sign config.json
Verify:
acrf-config-guard verify config.json
Output when valid:
OK: config.json integrity verified
Output when tampered:
FAIL: config.json
Config integrity check failed.
Expected: sha256:9f4a2b8c1e6d3f7a0b5c9e2d4...
Got: sha256:6343536004920d0fe642b02ca...
The defense is fail-closed. A tampered or unsigned config never loads.
In production:
What NOT to do:
Step 1 - Install on the client system:
pip install acrf-config-guard
Step 2 - Sign every config file once during deployment:
for cfg in /etc/agents/*.json; do
acrf-config-guard sign "$cfg"
done
Step 3 - Replace one line in each agent startup code.
Before:
config = json.load(open("config.json"))
After:
from acrf_config_guard import load_safe
config = load_safe("config.json", os.environ["ACRF_CONFIG_SECRET"])
Every config file is now tamper-evident. A modified file will not load.
CE-1 Config files treated as execution vectors and validated before use
CE-2 Integrity verification prevents tampered configs from loading
Out of scope (your infrastructure):
CE-3 Config changes require approval workflow before deployment
It only ensures that the config you load is byte-identical to the config you signed. That is the ACRF-06 defense pattern.
LangChain, CrewAI, AutoGen, MCP-based systems, custom agents. If you read JSON config files, you can use this library.
Ravi Karthick Sankara Narayanan Kanna Sekar
Apache 2.0
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 5 May 2026 | 0 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 18:25 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:08f835c99d28396696f76391c4256a4495f8578002183cb522c2af27dcca8682