Protection des prompts entrants
Inspectez les prompts système et le texte des messages pris en charge avant l'envoi au fournisseur. Les résultats fiables peuvent avertir, masquer, bloquer ou exiger une approbation.
Voir la configurationÉvaluez les prompts, le code généré et les actions proposées près du poste du développeur. Gardez les décisions sensibles à la latence en local et ajoutez une analyse distante seulement si le risque le justifie.
Application locale en premier
Chaque chemin pris en charge exécute d'abord des contrôles locaux déterministes. L'analyse distante peut être désactivée, asynchrone, ajoutée comme second avis synchrone ou rendue obligatoire pour un flux ciblé.
Prompt, sortie retenue ou action proposée
Détecteurs, politique en cache et application immédiate
Contexte de l'organisation et contrôles approfondis si activés
Le même modèle de décision couvre les données qui quittent le poste, le contenu qui entre dans le dépôt et les actions qu'un agent souhaite exécuter.
Inspectez les prompts système et le texte des messages pris en charge avant l'envoi au fournisseur. Les résultats fiables peuvent avertir, masquer, bloquer ou exiger une approbation.
Voir la configurationAnalysez le code, les diffs, les commandes, les paquets et les URL avant insertion. La bibliothèque est prête ; un adaptateur d'éditeur doit retenir et appliquer le résultat.
Voir la configurationClassez les actions shell, fichier, Git, déploiement, identifiants et infrastructure avant exécution. L'adaptateur gère l'interface d'approbation et l'application finale.
Voir la configurationLes modes sont explicites afin qu'un classificateur d'arrière-plan ne devienne pas silencieusement une dépendance bloquante. Si les décisions locale et distante sont synchrones, la plus restrictive s'applique.
| Mode | Comportement | Latence distante sur le chemin | Échec distant |
|---|---|---|---|
local_only | Exécute les détecteurs et la politique locale ou en cache. L'évaluateur distant n'est jamais appelé. | Non | Sans objet |
local_and_shadow | Retourne immédiatement le résultat local, puis lance l'analyse distante de manière asynchrone pour comparaison et télémétrie. | Non | Utiliser le résultat local |
local_then_remote | Exécute d'abord le local, attend jusqu'à l'échéance configurée et applique la décision terminée la plus restrictive. | Oui | Utiliser le résultat local |
remote_required | Exécute d'abord le local puis exige une décision distante. Une analyse absente, échouée ou expirée bloque l'interaction. | Oui | Bloquer |
Guide de déploiement depuis les sources
L'agent de point de terminaison et les assistants de configuration des éditeurs sont actuellement déployés depuis les sources. La protection des sorties reste une bibliothèque nécessitant un adaptateur avant livraison ou insertion.
L'installateur public et les extensions d'éditeur ne sont pas publiés. Cette configuration source utilise les hooks locaux documentés de Cursor et Claude Code, ainsi qu'une route fournisseur locale documentée pour Codex.
Compilez et exécutez l'agent local depuis ce dépôt. Il inspecte le trafic JSON pris en charge avant de le transmettre par un fournisseur local direct ou par le proxy HTTPS sélectif.
pnpm install
pnpm --filter @promptective/agent build
node packages/agent/dist/index.js start \
--mode protect \
--input-protection local_onlyAppelez la bibliothèque de protection locale pendant que la sortie est encore retenue. La prévention n'est réelle que si l'adaptateur applique le résultat avant livraison ou insertion.
import { createLocalProtectionEngine } from '@promptective/local-protection';
const engine = createLocalProtectionEngine({
modes: { generated_output: 'local_only' },
});
const result = await engine.evaluate({
feature: 'generated_output',
interaction: outputInteraction,
generatedOutput: {
text: assistantText,
targetFile: 'src/server.ts',
language: 'typescript',
delivered: false,
},
});
if (result.decision.outcome === 'block') {
holdOutput();
}Placez l'évaluateur local entre l'action proposée et l'exécuteur. La bibliothèque n'exécute jamais la commande elle-même.
const result = await engine.evaluate({
feature: 'tool_action',
interaction: actionInteraction,
toolAction: {
toolName: 'terminal',
command: proposedCommand,
path: workspacePath,
},
});
switch (result.decision.outcome) {
case 'allow': executeAction(); break;
case 'warn': showWarning(); break;
case 'require_approval': requestApproval(); break;
case 'block': denyAction(); break;
}Commencez en local puis activez l'analyse distante fonction par fonction. Les modes distants envoient le contenu normalisé au point de contrôle configuré.
Recommandé pour les prompts et les actions lorsque la faible latence prévisible et l'application hors ligne sont prioritaires.
promptective-agent start --mode protect --input-protection local_onlyCompare un classificateur distant aux décisions locales de production sans ajouter de latence ni modifier l'application.
export PROMPTECTIVE_API_KEY="pa_your_agent_key"
export PROMPTECTIVE_CLOUD="https://api.promptective.ai"promptective-agent start --mode protect --input-protection local_and_shadowPour les interactions sensibles où une décision distante approfondie justifie un délai borné. Un échec distant revient au local.
export PROMPTECTIVE_API_KEY="pa_your_agent_key"
export PROMPTECTIVE_CLOUD="https://api.promptective.ai"promptective-agent start --mode protect --input-protection local_then_remoteÀ réserver aux flux dont la politique exige un contrôle distant. Le mode échoue en fermeture si ce contrôle est indisponible.
export PROMPTECTIVE_API_KEY="pa_your_agent_key"
export PROMPTECTIVE_CLOUD="https://api.promptective.ai"promptective-agent start --mode protect --input-protection remote_required --remote-timeout 1500La couverture dépend du point d'application et d'un canari réel sur la version exacte : Cursor et Claude Code utilisent des hooks utilisateur locaux, tandis que Codex emploie une route fournisseur locale directe. Les réserves sur la lecture de fichiers et le lanceur Windows de Cursor s'appliquent. Claude peut ajouter une route fournisseur après un canari d'identifiants.
Les hooks utilisateur locaux peuvent bloquer l'envoi des prompts et certains événements shell, MCP, fichier et Tab lorsque Cursor les émet et les lance, sans rediriger le trafic fournisseur. La couverture des lectures est conditionnelle : Cursor présente un contournement confirmé de beforeReadFile pour les fichiers déjà ouverts dans l'éditeur. Les réponses générées ne sont pas retenues avant livraison.
Collez ce bloc une fois. Il compile l'agent, crée une sauvegarde unique et fusionne cinq hooks locaux dans ~/.cursor/hooks.json ; aucun démon Promptective ni autorité locale n'est nécessaire. La configuration seule ne prouve pas l'application : des canaris réels de lecture sont requis, et le lancement des hooks sous Windows reste conditionnel au shell et à la version Cursor exacts.
pnpm install
pnpm --filter @promptective/agent build
node packages/agent/dist/index.js configure-cursor{
"version": 1,
"hooks": {
"beforeSubmitPrompt": [{
"command": "… cursor-hook prompt PROMPTECTIVE_CURSOR_HOOK=1",
"timeout": 5,
"failClosed": true
}],
"beforeShellExecution": [{
"command": "… cursor-hook shell PROMPTECTIVE_CURSOR_HOOK=1",
"timeout": 5,
"failClosed": true
}],
"beforeMCPExecution": [{
"command": "… cursor-hook mcp PROMPTECTIVE_CURSOR_HOOK=1",
"timeout": 5,
"failClosed": true
}],
"beforeReadFile": [{
"command": "… cursor-hook file PROMPTECTIVE_CURSOR_HOOK=1",
"timeout": 5,
"failClosed": true
}],
"beforeTabFileRead": [{
"command": "… cursor-hook tab_file PROMPTECTIVE_CURSOR_HOOK=1",
"timeout": 5,
"failClosed": true
}]
}
}Le moteur local peut protéger le trafic fournisseur inspectable, mais aucun adaptateur de hook Codex natif n'est encore publié. Conservez le bac à sable et les approbations Codex.
Collez ce bloc une fois. Il compile l'agent, sauvegarde et met à jour ~/.codex/config.toml en toute sécurité, puis laisse Promptective actif en mode d'audit local. Quittez complètement Codex et rouvrez-le après le démarrage de l'agent.
pnpm install
pnpm --filter @promptective/agent build
node packages/agent/dist/index.js configure-codex
node packages/agent/dist/index.js start --mode audit --input-protection local_onlymodel_provider = "openai"
openai_base_url = "http://127.0.0.1:9888"
[features]
enable_request_compression = falseLes hooks UserPromptSubmit et PreToolUse bloquent localement les prompts dangereux et contrôlent les actions shell, fichier, MCP et autres outils. Ils conservent l'authentification et les permissions natives de Claude ; les sorties ne sont pas retenues.
Collez ce bloc une fois. Il compile l'agent, crée une sauvegarde unique et fusionne les hooks locaux de prompt et d'outil dans ~/.claude/settings.json sans modifier l'authentification. Les hooks exécutent directement le détecteur local.
pnpm install
pnpm --filter @promptective/agent build
node packages/agent/dist/index.js configure-claude{
"hooks": {
"UserPromptSubmit": [{
"hooks": [{
"type": "command",
"command": "/absolute/path/to/node",
"args": [
"/absolute/path/to/promptective/packages/agent/dist/index.js",
"claude-hook",
"prompt",
"PROMPTECTIVE_CLAUDE_HOOK=1"
],
"timeout": 5
}]
}],
"PreToolUse": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "/absolute/path/to/node",
"args": [
"/absolute/path/to/promptective/packages/agent/dist/index.js",
"claude-hook",
"tool",
"PROMPTECTIVE_CLAUDE_HOOK=1"
],
"timeout": 5
}]
}]
}
}Une déclaration de couverture précise fait partie du contrôle de sécurité. Ces contraintes doivent rester visibles pendant toute évaluation et tout déploiement.
Commencez en local-only, vérifiez la couverture exacte, puis introduisez l'analyse distante en shadow ou synchrone une fonction à la fois.