Checkpoint System
Checkpoints are the integration points where KeySpot intercepts agent state. You configure which triggers fire at construction, then call guard.checkpoint(state) whenever you want to sanitise state.
Configuration
const guard = new KeySpot({
checkpointTriggers: new Set([
CheckpointTrigger.SCAN,
CheckpointTrigger.VAULT_WRITE,
CheckpointTrigger.TAINT_REDACT,
CheckpointTrigger.PROMPT_VALIDATION,
CheckpointTrigger.BEFORE_EMBED,
]),
onCheckpointTrigger: async (trigger, context) => {
console.log(`[KeySpot] Trigger ${trigger} fired`, context);
},
});
The Checkpoint Flow
guard.checkpoint(state)
│
├─ emitTrigger(SCAN)
├─ audit.log('checkpoint_start')
├─ scanner.scan(state)
│ │
│ ├─ for each pattern match:
│ │ ├─ emitTrigger(VAULT_WRITE)
│ │ ├─ vault.write(secret) → vaultId
│ │ ├─ vault.generateRef(vaultId) → "vault:v1:..."
│ │ ├─ taintEngine.tag(ref, secretId)
│ │ └─ replaceAtPath(state, ref)
│ │
│ └─ for each tainted value:
│ ├─ replaceAtPath(state, '[REDACTED TAINTED CONTENT]')
│ └─ audit.log('taint_redacted')
│
├─ audit.log('checkpoint_end')
└─ return cleanState
Wrap
guard.wrap() is a convenience that auto-checkpoints:
const result = await guard.wrap(async (state) => {
return await llm.generate(state);
}, initialState);
// 1. Checkpoints initialState
// 2. Executes the function
// 3. Checkpoints the return value
Prune Strategies in Action
const guard = new KeySpot({
pruneStrategy: PrunerStrategy.VAULT_WITH_TAINT,
});
await guard.checkpoint({ openai_key: 'sk-proj-abc123...' });
// openai_key → "vault:v1:vault_a3f9b2:d7e2f4a9...:1717500000000"