Signed rules-bundle distribution
The Agentforce checks (AP-061 to AP-070) read their catalog data from a signed knowledge bundle, so the catalog can change without a new binary.
vulkro-sf update # fetches and verifies the latest bundle
A scan never downloads the bundle. It uses the verified copy vulkro-sf update last fetched, or the seed copy built into every binary. A scan never fails because a bundle is missing, and an air-gapped install always has a working catalog. When the cached copy is older than a day, a scan prints a one-line note suggesting vulkro-sf update.
What the bundle holds
| Finding | Catalog field |
|---|---|
| AP-061 (PII free text into an agent) | pii_free_text_fields |
| AP-062 (over-broad Trusted URL) | trusted_url_wildcard_blocklist |
| AP-066 (missing customer verification) | standard_verification_actions |
| AP-067 (missing output assignments) | standard_verification_actions.required_outputs |
| AP-068 (thin topic instructions) | topic_word_thresholds |
| AP-069 (too many topics) | excessive_topics_threshold |
| AP-070 (untested agent action) | test_file_patterns |
Other anti-pattern checks are fixed in the binary.
Why it is signed
vulkro-sf update downloads agentforce.bundle.json and its detached Ed25519 signature agentforce.bundle.sig from https://dist.vulkro.com/sf/rules. The signature is checked against a public key built into the binary. A bundle that fails the check, does not parse, or cannot be cached is rejected and the seed is used, so someone who controls the download server cannot change what the checks report. The signing key never leaves our release host.
Settings
| Variable | What it does |
|---|---|
VULKRO_SF_OFFLINE=1 | Ignore the cached bundle (scans use the seed) and skip the bundle refresh in update. |
VULKRO_SF_RULES_BUNDLE_URL | Base URL update fetches from. Default https://dist.vulkro.com/sf/rules. For an internal mirror. |
VULKRO_SF_RULES_BUNDLE_OVERRIDE | Load a local JSON bundle instead (testing). |
VULKRO_SF_RULES_BUNDLE_CACHE_DIR | Cache directory. Default ~/.vulkro/rules-bundle/. |
VULKRO_SF_RULES_BUNDLE_MIN_REFRESH_SECS | Age after which a scan suggests update. Default 86400, clamped to 60 to 604800. |
vulkro-sf env rules-bundle prints the same list.
See also: Agentforce detectors, vulkro-sf update