Skip to main content
Common issues and how to resolve them.

Policy Not Enforcing

Symptom: All requests return ALLOW even with deny rules configured. Check:
  1. Verify mode is 'ENFORCE' (not 'MONITOR' or 'REPORT_ONLY')
  2. Check if PLAN_ONLY mode is enabled (plan_only_mode: true skips enforcement)
  3. Verify the rule condition matches your request’s action string exactly
  4. Check engine.getStatus() to confirm rules are loaded

FREEZE Rule Not Blocking

Symptom: Action matches a FREEZE rule but isn’t being denied. Check:
  1. FREEZE rules match on the action field — verify exact string match
  2. FREEZE rules are evaluated in pre-evaluation — they run before modules
  3. Check if the request is using evaluateV12() (v1.2 method bypasses pre-evaluation)

Bundle Signature Verification Failing

Symptom: BundleIntegrityError when loading a policy bundle. Check:
  1. Verify the public key matches the private key used to sign the bundle
  2. Check that the bundle file hasn’t been modified after signing
  3. Verify the GOVERNANCE_PUBLIC_KEY environment variable is set correctly

NHI Verification Failing

Symptom: Requests denied with NHI_SCOPE_VIOLATION or AGENT_ATTESTATION_MISSING. Check:
  1. Verify agentId is passed in the evaluation context
  2. Verify the agent is registered in the NHI inventory with status active
  3. Check that the action is within the agent’s registered scopes
  4. If attestation is required, verify the token is valid and not expired

Approval Token Expired

Symptom: ApprovalExpiredError when calling approveDecision(). Check:
  1. Approval tokens have a TTL (default: 10 minutes)
  2. The token may have expired before the approver responded
  3. Re-evaluate the request to get a fresh token

Hot-Swap Rejected

Symptom: loadPolicy() fails with POLICY_BUNDLE_SWAP_FAILED. Check:
  1. Bundle schema validation failed — check the bundle structure
  2. Bundle integrity hash doesn’t match signature
  3. Bundle requires capabilities the engine doesn’t support (capability negotiation)
  4. Previous bundle is retained on failure — governance continues uninterrupted

TealClassifier Model Not Loading

Symptom: CLASSIFIER_FALLBACK event emitted, ML not running. Check:
  1. Verify the ONNX model file exists at the configured path
  2. Check that onnxruntime-node is installed (npm install onnxruntime-node)
  3. Verify the model is compatible with the installed ONNX Runtime version
  4. Fallback to regex_only is automatic — governance continues without ML

Cost Anomaly False Positives

Symptom: COST_ANOMALY_DETECTED firing on normal requests. Check:
  1. The baseline may not have enough samples yet (min_samples not reached)
  2. Reduce sensitivity: anomaly: { sensitivity: 'low' }
  3. Increase the spike multiplier: spike_multiplier: 20
  4. Reset the baseline after a legitimate usage pattern change

Drift Detection False Positives

Symptom: BEHAVIORAL_DRIFT_DETECTED during normal operation. Check:
  1. Verify min_samples has been reached (default: 100)
  2. If agent behavior legitimately changed, reset the baseline
  3. Reduce sensitivity: drift: { sensitivity: 'low' }

Session TTL Expired

Symptom: SESSION_TTL_EXPIRED blocking requests. Check:
  1. Default session TTL is 8 hours — check if the session has been running longer
  2. Increase TTL if needed: temporal: { session_ttl: '24h' }
  3. Implement session renewal in your application

Performance Issues

Symptom: Evaluation latency exceeds 25ms p99. Check:
  1. How many modules are registered? Each adds 1-3ms
  2. Is TealClassifier using ensemble_union? Switch to regex_only for speed
  3. Are post-hooks blocking? They should be async
  4. Is the drift baseline window too large?
See Performance Tuning for detailed optimization.

Getting Help

If none of the above resolves your issue:

GitHub Issues

Report bugs with reproduction steps

Email Support

Direct support from the TealTiger team