Aperçu développeur

Protection locale pour les assistants de programmation IA

É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

Des décisions rapides sans dépendance obligatoire au cloud

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é.

Interaction de l'assistant

Prompt, sortie retenue ou action proposée

Protection locale

Détecteurs, politique en cache et application immédiate

Analyse distante facultative

Contexte de l'organisation et contrôles approfondis si activés

Trois surfaces de protection

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.

Intégré au point de terminaison

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
Bibliothèque d'adaptation

Analyse des sorties générées

Analysez 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 configuration
Bibliothèque d'adaptation

Gouvernance des actions d'outils

Classez 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 configuration

Choisissez la latence et l'assurance pour chaque fonction

Les 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.

ModeComportementLatence 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é.NonSans 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.NonUtiliser 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.OuiUtiliser 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.OuiBloquer

Guide de déploiement depuis les sources

Configurer chaque surface de protection

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.

Utilisez ce guide pour le développement et une évaluation contrôlée

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.

Intégré au point de terminaison

1. Protéger les prompts au point de terminaison

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.

  1. 1Utilisez macOS avec Node.js 20 ou plus récent, puis installez les dépendances du dépôt.
  2. 2Utilisez l'assistant à coller ci-dessous pour Cursor, Codex ou Claude Code. Pour les autres clients compatibles avec un proxy, lancez pnpm agent:setup afin de créer l'autorité locale et la route PAC avec approbation administrateur.
  3. 3Démarrez avec --mode protect et local_only. Le mode audit enregistre la décision mais transmet la requête originale.
  4. 4Vérifiez un événement [LOCAL PROTECTION] pour le flux exact avant d'affirmer sa couverture. Les clients routés par proxy doivent aussi afficher [INTERCEPT].
Terminal
pnpm install
pnpm --filter @promptective/agent build
node packages/agent/dist/index.js start \
  --mode protect \
  --input-protection local_only
Bibliothèque d'adaptation

2. Analyser la sortie générée avant insertion

Appelez 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.

  1. 1Créez une interaction de sortie d'assistant avec l'enveloppe du protocole canonique.
  2. 2Transmettez le texte brut, le fichier cible, l'indication de langage et delivered: false au moteur local.
  3. 3Retenez les résultats critiques ; affichez les avertissements ou demandez une approbation selon la politique de l'organisation.
  4. 4Enregistrez par défaut les empreintes et métadonnées. Évitez de conserver le code brut sans autorisation explicite.
TypeScript
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();
}
Bibliothèque d'adaptation

3. Gouverner les actions avant exécution

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.

  1. 1Normalisez le nom de l'outil, la commande, le chemin, l'URL et les arguments bornés avant tout effet de bord.
  2. 2Évaluez avec feature: tool_action ; local_only est le mode par défaut pour cette frontière sensible à la latence.
  3. 3Associez allow, warn, require_approval et block à un comportement explicite de l'adaptateur.
  4. 4Conservez le bac à sable et les permissions natives de l'éditeur ; ce classificateur est un contrôle supplémentaire, pas un bac à sable système.
TypeScript
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;
}

Configurer chaque mode d'exécution

Commencez en local puis activez l'analyse distante fonction par fonction. Les modes distants envoient le contenu normalisé au point de contrôle configuré.

local_only

Recommandé pour les prompts et les actions lorsque la faible latence prévisible et l'application hors ligne sont prioritaires.

Terminal
promptective-agent start --mode protect --input-protection local_only

local_and_shadow

Compare un classificateur distant aux décisions locales de production sans ajouter de latence ni modifier l'application.

Environnement requis
export PROMPTECTIVE_API_KEY="pa_your_agent_key"
export PROMPTECTIVE_CLOUD="https://api.promptective.ai"
Terminal
promptective-agent start --mode protect --input-protection local_and_shadow

local_then_remote

Pour les interactions sensibles où une décision distante approfondie justifie un délai borné. Un échec distant revient au local.

Environnement requis
export PROMPTECTIVE_API_KEY="pa_your_agent_key"
export PROMPTECTIVE_CLOUD="https://api.promptective.ai"
Terminal
promptective-agent start --mode protect --input-protection local_then_remote

remote_required

À réserver aux flux dont la politique exige un contrôle distant. Le mode échoue en fermeture si ce contrôle est indisponible.

Environnement requis
export PROMPTECTIVE_API_KEY="pa_your_agent_key"
export PROMPTECTIVE_CLOUD="https://api.promptective.ai"
Terminal
promptective-agent start --mode protect --input-protection remote_required --remote-timeout 1500

Couverture actuelle des éditeurs

La 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.

Cursor

Conditionnelle

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.

Configuration actuelle : Installez les hooks en fermeture sécurisée et vérifiez les canaris de prompt et d'action sur la version Cursor exacte. Pour les chemins sensibles, ajoutez un refus natif Cursor tel que .cursorignore et exigez les canaris fichier fermé et tampon ouvert ; considérez-le comme une défense en profondeur, pas comme une frontière étanche. Sous Windows, exigez un canari réussi du lanceur dans les journaux Hooks avant d'affirmer une couverture. Conservez les secrets stricts hors de l'espace Cursor monté, dans un espace de travail, une VM ou un conteneur isolé.

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.

Terminal — à coller depuis la racine du dépôt
pnpm install
pnpm --filter @promptective/agent build
node packages/agent/dist/index.js configure-cursor
Voir les hooks Cursor écrits par l'assistant
~/.cursor/hooks.json
{
  "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
    }]
  }
}

Codex

Conditionnelle

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.

Configuration actuelle : Redirigez le fournisseur OpenAI intégré vers la route locale, en conservant l'identité du fournisseur Codex et la partition de l'historique des tâches. Désactivez la compression des requêtes et vérifiez un événement de protection locale avant l'application. Gardez le bac à sable et les approbations natifs de Codex activés.

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.

Terminal — à coller depuis la racine du dépôt
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_only
Voir les réglages Codex écrits par l'assistant
~/.codex/config.toml
model_provider = "openai"
openai_base_url = "http://127.0.0.1:9888"

[features]
enable_request_compression = false

Claude Code

Conditionnelle

Les 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.

Configuration actuelle : Installez les hooks utilisateur et ouvrez une nouvelle session Claude Code ; aucun démon ni autorité locale n'est requis. L'option --provider-route est limitée aux identifiants Anthropic directs et refuse de rediriger une passerelle existante.

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.

Terminal — à coller depuis la racine du dépôt
pnpm install
pnpm --filter @promptective/agent build
node packages/agent/dist/index.js configure-claude
Voir les hooks Claude Code écrits par l'assistant
~/.claude/settings.json
{
  "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
      }]
    }]
  }
}

Limites de sécurité et de compatibilité

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.

  • TLS épinglé, QUIC, protocoles propriétaires, contournements de proxy et clients ignorant le proxy sont hors de la frontière actuelle.
  • Codex protège les prompts inspectables. Les hooks Cursor et Claude ne contrôlent que certains événements de contexte ou d'outil effectivement émis ; beforeReadFile de Cursor peut être contourné par un tampon déjà ouvert dans l'éditeur. La prévention des sorties exige toujours un adaptateur avant livraison.
  • Les contrôles locaux sont des règles déterministes ciblées, pas une découverte complète des données personnelles, un SAST complet, une analyse de malware ou une réputation de paquets.
  • Le texte simple des messages peut être masqué. Le contenu structuré échoue en fermeture si une réécriture exacte et sûre ne peut être reportée dans la charge fournisseur.
  • Les modes distants transmettent le contenu normalisé au point de contrôle configuré. Appliquez les politiques de résidence, conservation et accès avant activation.

Évaluez le chemin local avec votre flux réel

Commencez en local-only, vérifiez la couverture exacte, puis introduisez l'analyse distante en shadow ou synchrone une fonction à la fois.