
Sécurité de la couche d'exécution (ELS) pour les agents IA — shell avec application de politiques et audit.
Note macOS : La mise en œuvre native macOS via ESF (Endpoint Security Framework) + NE (Network Extension) est en version Alpha. Elle fonctionne de bout en bout — les événements de fichiers, de processus et de réseau transitent par l'extension système vers le moteur de politique Go — mais attendez-vous à des aspérités et des changements cassants entre les versions. Pour une utilisation en production aujourd'hui, nous recommandons Linux.
Note Windows : Nous travaillons à faire signer les pilotes minifilter. D'ici là, seul le mode Windows WSL2 est entièrement pris en charge pour une utilisation en production.
Passerelle d'exécution sécurisée et supervisée par des politiques pour les agents IA.
agentsh se place sous votre agent/outillage — interceptant les activités fichier, réseau, processus et signal (y compris les arborescences de sous-processus), appliquant la politique que vous définissez et émettant des événements d'audit structurés.
Note plateforme : Linux offre une application complète (score de sécurité 100 %). macOS ESF+NE (score 90 %) est en Alpha — fonctionnel mais pas prêt pour la production. Windows WSL2 offre une application équivalente à Linux (score 100 %) ; le Windows natif via pilote minifilter + AppContainer (score 85 %) est en attente de signature de pilote. Voir la Matrice de comparaison des plateformes pour plus de détails.
allow, deny, approve (approbation humaine), soft_delete ou redirect.db_services déclaréesLes workflows d'agents exécutent finalement du code arbitraire (pip install, make test, python script.py). Les contrôles traditionnels « demander une approbation avant d'exécuter une commande » s'arrêtent à la limite de l'outil et ne peuvent pas voir ce qui se passe à l'intérieur de cette commande.
agentsh applique la politique à l'exécution, de sorte que le travail caché effectué par les sous-processus est toujours régi, journalisé et (le cas échéant) approuvé.
La plupart des systèmes peuvent refuser une action. agentsh peut aussi la rediriger.
Cela signifie que lorsqu'un agent tente la mauvaise approche (ou des solutions de contournement par force brute), la politique peut l'orienter vers le bon chemin en échangeant la commande et en renvoyant des instructions — maintenant l'agent sur la voie pavée et réduisant les tentatives inutiles.
Exemple : rediriger curl vers un wrapper audité```yaml command_rules:
**Exemple : rediriger les écritures en dehors de l'espace de travail vers l'intérieur**```yaml
file_rules:
- name: redirect-outside-writes
paths: ["/home/**", "/tmp/**"]
operations: [write, create]
decision: redirect
redirect_to: "/workspace/.scratch"
message: "Writes outside workspace redirected to /workspace/.scratch"
L'agent voit une opération réussie (pas une erreur), mais vous contrôlez où les choses aboutissent réellement.
Les conteneurs isolent la surface de l'hôte ; agentsh ajoute une visibilité et une politique d'exécution dans le conteneur.
macOS (Homebrew)```bash brew tap canyonroad/tap brew install --cask agentsh
Cela installe le bundle d'applications AgentSH avec l'extension système ESF+NE. Après l'installation, il vous sera demandé d'approuver l'extension système dans **Réglages système > Général > Éléments de connexion et extensions**.
**Linux (à partir d'une version GitHub)**
Téléchargez le `.deb`, `.rpm` ou `.apk` pour votre plateforme depuis la [page des versions](https://github.com/erans/agentsh/releases).```bash
# Example for Debian/Ubuntu
sudo dpkg -i agentsh_<VERSION>_linux_amd64.deb
Depuis les sources (Linux)```bash make build sudo install -m 0755 bin/agentsh bin/agentsh-shell-shim /usr/local/bin
**Depuis les sources (macOS)**```bash
# ESF+NE mode (full enforcement — Alpha, requires Xcode 15+)
make build-macos-enterprise
Voir Guide de construction macOS pour des instructions détaillées de construction sur macOS.
./bin/agentsh server --config configs/server-config.yaml
SID=$(./bin/agentsh session create --workspace . --json | jq -r .id) ./bin/agentsh exec "$SID" -- ls -la
./bin/agentsh exec --output json --events summary "$SID" -- curl https://example.com
---
### Vérifier ce qui est appliqué
`agentsh detect` sonde l'hôte et rapporte quelles primitives d'application sont réellement disponibles — seccomp, Landlock, FUSE, eBPF, ptrace, cgroups — regroupées en scores de protection par domaine ainsi que le mode de sécurité sélectionné. Sur les hôtes restreints (Daytona, E2B, classe Firecracker) où l'écouteur seccomp user-notify ne peut pas s'installer, il rapporte le mode qui sera *réellement* appliqué plutôt que ce que le noyau supporte simplement.```bash
agentsh detect # human-readable protection report
agentsh detect config # emit a config tuned for this host
Voir Modes de sécurité pour la matrice des modes et les réglages fins.
agentsh exec $SID -- <your-command-here>agentsh exec --output json --events summary $SID -- <your-command-here>SID=$(agentsh session create --workspace . --json | jq -r .id)---
### Démarrage automatique (aucune étape manuelle du démon)
Vous n'avez **pas** besoin de démarrer `agentsh server` vous-même.
* Le premier `agentsh exec` (ou tout `/bin/sh`/`/bin/bash` pourvu d'un shim) lancera automatiquement un serveur local en utilisant `configs/server-config.yaml` (ou `AGENTSH_CONFIG` si défini).
* Ce serveur maintient la couche FUSE et le moteur de politique actifs pendant la durée de la session ; les commandes suivantes le réutilisent.
* Définissez `AGENTSH_NO_AUTO=1` si vous souhaitez gérer manuellement le cycle de vie du serveur.
---
## Utilisation dans Docker (avec le shim du shell)
Voir `Dockerfile.example` pour une image minimale basée sur Debian.
Dans l'image, installez un package de version (ou copiez votre build), puis activez le shim :```bash
agentsh shim install-shell \
--root / \
--shim /usr/bin/agentsh-shell-shim \
--bash \
--i-understand-this-modifies-the-host
Pointez le shim vers votre serveur (sidecar ou hôte) :```dockerfile ENV AGENTSH_SERVER=http://127.0.0.1:18080
Désormais, toute commande `/bin/sh -c ...` ou `/bin/bash -lc ...` dans le conteneur transite par agentsh.
### Application non interactive
Par défaut, le shim contourne la politique lorsque stdin n'est pas un TTY (préservant les données binaires pour les commandes via pipe). Sur les plateformes où les commandes sont toujours non interactives mais nécessitent une application des règles (par ex., exe.dev, API sandbox), ajoutez `--force` :```bash
agentsh shim install-shell \
--root / \
--shim /usr/bin/agentsh-shell-shim \
--bash \
--force \
--i-understand-this-modifies-the-host
Cela écrit /etc/agentsh/shim.conf avec force=true, que le shim lit au démarrage. Le fichier de configuration fonctionne indépendamment de la façon dont le shell est lancé (contrairement aux variables d'environnement ou aux scripts de profil). AGENTSH_SHIM_FORCE=1 dans l'environnement du processus produit le même effet par processus.
Modèle recommandé : exécuter agentsh en tant que sidecar (ou PID 1) dans le même pod/service et partager un volume de workspace ; le shim garantit que chaque saut de shell reste sous la politique.
allow (autoriser)deny (refuser)approve (approbation humaine)redirect (substituer une commande)audit (autoriser + journaliser)soft_delete (mettre en quarantaine les suppressions avec restauration)Les règles vivent dans une politique nommée ; les sessions choisissent une politique.
Valeurs par défaut :
configs/server-config.yamlconfigs/policies/default.yamlAGENTSH_POLICY_NAME sur un nom de politique autorisé (sans suffixe). Si non défini/invalide/interdit, la valeur par défaut est utilisée.policies.env_policy (allow/deny, max_bytes, max_keys, block_iteration) et les surcharges env_* par commande dans les fichiers de politique. Une liste d'autorisation vide par défaut donne un PATH/LANG/TERM/HOME minimal avec une liste de refus de secrets intégrée ; définir block_iteration pour masquer l'itération d'environnement (nécessite le shim d'environnement).policies.allowed dans config.yml ; vide signifie que seule la valeur par défaut est autorisée.policies.manifest_path sur un manifeste SHA256 pour vérifier les fichiers de politique au chargement.env_allow, agentsh construit un environnement minimal (PATH/LANG/TERM/HOME) et supprime les clés secrètes intégrées.env_allow/env_deny par commande plus env_max_keys/env_max_bytes limitent et filtrent l'environnement enfant au moment de l'exécution.env_block_iteration: true (global ou par règle) masque l'énumération de l'environnement ; définir policies.env_shim_path sur libenvshim.so pour que agentsh injecte LD_PRELOAD + AGENTSH_ENV_BLOCK_ITERATION=1.BASH_ENV pour désactiver les builtins du shell qui contournent seccomp. Configurer dans (global) ou au niveau de la politique (remplace le global).version: 1 name: default
file_rules:
name: allow-workspace paths: ["/workspace", "/workspace/**"] operations: [read, open, stat, list, write, create, mkdir, chmod, rename] decision: allow
name: approve-workspace-delete paths: ["/workspace", "/workspace/**"] operations: [delete, rmdir] decision: approve message: "Delete {{.Path}}?" timeout: 5m
name: deny-ssh-keys paths: ["/home//.ssh/", "/root/.ssh/**"] operations: ["*"] decision: deny
network_rules:
command_rules:
### Utilisation d'une politique```bash
# Start the server with your policy
./bin/agentsh server --config configs/server-config.yaml
# Create a session pinned to a policy
SID=$(./bin/agentsh session create --workspace /workspace --policy default --json | jq -r .id)
# Exec commands; responses include decision + guidance when blocked/approved
./bin/agentsh exec "$SID" -- rm -rf /workspace/tmp
agentsh prend en charge plusieurs méthodes d'authentification :
| Type | Cas d'utilisation |
|---|---|
api_key | Déploiements simples avec clés statiques |
oidc | SSO d'entreprise (Okta, Azure AD, etc.) |
hybrid | Les deux méthodes acceptées |
Modes d'approbation pour la vérification humaine dans la boucle :
local_tty - Invite de terminal (par défaut)totp - Codes d'application d'authentificationwebauthn - Clés de sécurité matérielles (YubiKey)api - Approbation à distance via RESTVoir SECURITY.md pour les détails de configuration.
Voir SECURITY.md pour les options de configuration complètes, ou exécutez la Démonstration de protection MCP pour voir ces détections en action.
La façon la plus rapide de « comprendre » est d'exécuter quelque chose qui lance des sous-processus et touche au système de fichiers/réseau.```bash
SID=$(agentsh session create --workspace . --json | jq -r .id)
agentsh exec "$SID" -- uname -a
agentsh exec --output json --events summary "$SID" -- curl -s https://example.com
agentsh exec "$SID" -- rm -rf ./tmp
agentsh exec --output json --events all "$SID" -- ls
**Ce que vous verrez dans la sortie JSON :**
- `exit_code`: le code de sortie de la commande
- `stdout` / `stderr`: sortie capturée
- `events[]`: chaque opération fichier/réseau/processus avec les décisions de politique
- `policy.decision`: `allow`, `deny`, `approve` ou `redirect`
Astuce : gardez un terminal ouvert avec `--output json` lors du test des politiques — cela rend évident ce qui est touché.
---
### Rapports de session
Générer des rapports Markdown résumant l'activité de la session :```bash
# Quick summary
agentsh report latest --level=summary
# Detailed investigation
agentsh report <session-id> --level=detailed --output=report.md
Rapports incluent :
Voir Guide d'intégration CI/CD pour des exemples de pipelines.
Créer des instantanés de l'état de l'espace de travail pour la récupération après des opérations destructrices :```bash
agentsh checkpoint create --session $SID --workspace /workspace --reason "before cleanup"
agentsh checkpoint list --session $SID
agentsh checkpoint show --session $SID --workspace /workspace --diff
agentsh checkpoint rollback --session $SID --workspace /workspace --dry-run
agentsh checkpoint rollback --session $SID --workspace /workspace
agentsh checkpoint purge --session $SID --older-than 24h --keep 5
**Auto-checkpoint :** Lorsque activé, agentsh crée automatiquement des points de contrôle avant les commandes risquées (`rm`, `mv`, `git reset`, `git checkout`, etc.). Configurez dans `sessions.checkpoints.auto_checkpoint`.
Voir [SECURITY.md](https://github.com/canyonroad/agentsh/blob/HEAD/SECURITY.md#checkpoint-and-rollback) pour toutes les options de configuration.
---
### Proxy LLM et DLP
agentsh inclut un proxy intégré qui intercepte toutes les requêtes API LLM des agents :```bash
# Check proxy status for a session
agentsh proxy status <session-id>
# View LLM-specific events
agentsh session logs <session-id> --type=llm
Fonctionnalités :
ANTHROPIC_BASE_URL et OPENAI_BASE_URL pour que les SDK des agents acheminent via le proxyConfiguration des fournisseurs :```yaml proxy: mode: embedded providers: anthropic: https://api.anthropic.com # Default Anthropic API openai: https://api.openai.com # Default OpenAI API
# Or use alternative providers:
# openai: http://localhost:8000 # LiteLLM / vLLM
# openai: https://your-resource.openai.azure.com # Azure OpenAI
# anthropic: https://llm.corp.example.com # Corporate gateway
**Configuration DLP :**```yaml
dlp:
mode: redact
patterns:
email: true
api_keys: true
custom_patterns:
- name: customer_id
display: identifier
regex: "CUST-[0-9]{8}"
Voir la Documentation du proxy LLM pour les options de configuration complètes.
Le même proxy dispatche également les entrées http_services déclarées — des amonts API nommés avec des règles par méthode et par chemin. Voir Services HTTP déclarés et le Livre de recettes des services HTTP pour plus de détails.
agentsh peut appliquer des politiques sur les services de base de données déclarés via db_services, database_connection_rules et database_rules. L'implémentation actuelle est limitée à la famille Postgres : PostgreSQL est la cible prise en charge, avec Aurora Postgres utilisant le même chemin et Redshift/CockroachDB traités comme des dialectes compatibles Postgres avec une couverture bêta. MySQL, MongoDB, Snowflake, BigQuery, Databricks, ClickHouse, MSSQL, Cassandra, Redis et Oracle font partie de la feuille de route, pas du support d'exécution actuel.
La prise en charge actuelle de Postgres inclut :
redirect sécurisé à l'exécution pour le remplacement de relation Postgres en lecture seule.Le runtime du proxy Postgres est aujourd'hui un code intra-processus Linux uniquement. Utilisez un environnement Linux natif, WSL2 ou une VM Linux pour l'application des politiques de base de données.
Voir Contrôle d'accès à la base de données et Documentation des politiques.
Générer des politiques restrictives à partir du comportement observé des sessions (workflow « profile-then-lock ») :```bash
agentsh policy generate latest --output=ci-policy.yaml
agentsh policy generate abc123 --name=production-build --threshold=10
agentsh policy generate latest
La politique générée :
- Autorise uniquement les opérations observées durant la session
- Regroupe les chemins en globs lorsque plusieurs fichiers se trouvent dans le même répertoire
- Réduit les sous-domaines en caractères génériques (par ex., `*.github.com`)
- Marque les commandes risquées (curl, wget, rm) avec des motifs d'arguments
- Inclut les opérations bloquées sous forme de règles commentées pour révision
**Cas d'utilisation :**
- **Verrouillage CI/CD** : Profiler un cycle de build/test, verrouiller les exécutions futures à ce comportement
- **Sandboxing d'agent** : Laisser un agent IA exécuter une tâche, générer une politique pour les exécutions futures
- **Profilage de conteneur** : Profiler une charge de travail, générer une politique minimale pour la production
---
## Accès à la base de données (PostgreSQL)
agentsh inclut un **proxy PostgreSQL** intégré qui rend l'accès à la base de données conscient de l'agent et gouverné par des politiques. Il parle le protocole filaire Postgres, classe chaque instruction en une liste d'*effets* (lectures, écritures, DDL, DCL, contrôle de transaction/session, `COPY`/export en masse, …), et évalue chaque effet par rapport à `database_rules` avant de transmettre en amont — ainsi un `UPDATE`, `DROP`, ou `DELETE` sans portée est gouverné de la même manière qu'une écriture de fichier ou une connexion réseau.
- **Évaluation par effet et multi-objet** — les règles sont collect-all / **any-deny-wins** (le verbe le plus restrictif décide), pas first-match.
- **Décisions :** `allow`, `deny`, `approve` (OK humain), `audit`, et `redirect` au niveau de l'instruction.
- **Protection `require_where`** — refuse les `UPDATE`/`DELETE` de niveau supérieur sans clause `WHERE`.
- **Règles au niveau de la connexion** (`database_connection_rules`) contrôlent quelles sessions peuvent atteindre quel `db_service` déclaré.
- **Événements d'audit d'authentification + d'instruction** pour chaque connexion et requête ; la journalisation du texte des instructions est configurable (`policies.db.log_statements: none | parameters_redacted | full`).
La phase 1 couvre le protocole filaire PostgreSQL v3 (dialectes : `postgres`, `aurora_postgres` ; `redshift` / `cockroachdb` en version bêta). Les connexions de réplication et chiffrées par GSSAPI sont refusées par défaut.```yaml
database_rules:
# normal reads + updates on the declared service
- name: app-read-and-update
db_service: appdb
operations: [READ, UPDATE]
decision: allow
# allow UPDATE/DELETE only when scoped by a WHERE clause
- name: app-guard-unscoped-dml
db_service: appdb
operations: [UPDATE, DELETE]
require_where: true
decision: allow
# block schema/DDL mutations; terminate the transaction on violation
- name: app-deny-ddl
db_service: appdb
operations: [CREATE, DROP, ALTER, EXPORT]
decision: deny
deny_mode_in_tx: terminate
message: "appdb is read+update only. Requested: {{.Operation}}"
Consultez la spécification de contrôle d'accès à la base de données pour la taxonomie complète des opérations, le modèle des effets, les règles de connexion et le modèle de menace d'inévitabilité.
agentsh peut rediriger de manière transparente les connexions DNS et TCP, permettant des cas d'utilisation tels que l'acheminement des appels API via des proxys d'entreprise ou le changement de fournisseur d'IA sans modification de code.
Intercepte la résolution DNS et renvoie les adresses IP configurées :```yaml dns_redirect:
match: "api.anthropic.com" redirect_ip: "10.0.0.50" visibility: audit_only on_failure: fail_closed
match: ".*\.openai\.com" # Regex pattern redirect_ip: "10.0.0.51" visibility: warn
### Connect Redirect
Rediriger les connexions TCP vers différentes destinations avec gestion TLS optionnelle :```yaml
connect_redirect:
- match: "api.anthropic.com:443"
redirect_to: "vertex-proxy.internal:8443"
tls_mode: passthrough # Forward encrypted traffic unchanged
visibility: silent
- match: "api.openai.com:443"
redirect_to: "azure-proxy.internal:443"
tls_mode: rewrite_sni # Modify SNI in TLS ClientHello
rewrite_sni: "azure-openai.example.com"
visibility: audit_only
agentsh intercepte les signaux (kill, SIGTERM, etc.) envoyés entre les processus, offrant un contrôle basé sur des politiques pour déterminer quels signaux peuvent atteindre quelles cibles.
signal_rules:
name: allow-self signals: ["@all"] target: type: self decision: allow
name: allow-children signals: ["@all"] target: type: children decision: allow
### Groupes de signaux
- `@all` - Tous les signaux (1-31)
- `@fatal` - SIGKILL, SIGTERM, SIGQUIT, SIGABRT
- `@job` - SIGSTOP, SIGCONT, SIGTSTP, SIGTTIN, SIGTTOU
- `@reload` - SIGHUP, SIGUSR1, SIGUSR2
### Types de cibles
- `self` - Processus qui se signale lui-même
- `children` - Processus enfants directs
- `descendants` - Tous les processus descendants
- `session` - Tout processus dans la session agentsh
- `external` - PID en dehors de la session
- `system` - PID 1 et threads du noyau
Voir la [documentation des politiques](https://github.com/canyonroad/agentsh/blob/HEAD/docs/operations/policies.md#règles-de-signal) pour les options de configuration complètes.
---
## Surveillance des E/S de fichiers sous macOS
Sur macOS, agentsh surveille les opérations d'entrée/sortie sur les fichiers en utilisant le framework de sécurité des endpoints (ESF), en s'abonnant aux événements AUTH et NOTIFY. Les opérations suivies incluent l'ouverture, la création, la suppression, le renommage, l'écriture (détectée via close-modified), et sur macOS 26+, chmod et chown via les événements de modification d'attributs. Chaque événement fichier est attribué à la session et à la commande d'origine via une résolution basée sur le PID, fournissant des pistes d'audit complètes dans les arborescences de sous-processus.
ESF offre un contrôle d'autorisation/refus au niveau du noyau mais ne prend pas en charge l'interception transparente des fichiers comme FUSE sous Linux. Les actions de politique nécessitant une interception -- telles que `redirect` (réécriture de chemin) et `soft_delete` (quarantaine) -- sont implémentées sous forme de refus + guidage : l'opération est bloquée au niveau ESF et l'agent reçoit des instructions pour réessayer avec le bon chemin ou pour accuser réception que le fichier est protégé. Voir le [document sur l'architecture ESF+NE de macOS](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-esf-ne-architecture.md) pour les détails des flux d'événements et la [documentation des politiques](https://github.com/canyonroad/agentsh/blob/HEAD/docs/operations/policies.md#actions-des-règles-de-fichier-sous-macos-esf) pour le comportement par action.
---
## Packs de politiques de démarrage
Vous disposez déjà d'une politique par défaut (`configs/policies/default.yaml`). Ces packs subjectifs sont disponibles sous forme de fichiers séparés afin que les équipes puissent en choisir un :
* **[`policies/dev-safe.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/dev-safe.yaml)** : sûr pour le développement local
* autoriser la lecture/écriture dans l'espace de travail
* approuver les suppressions dans l'espace de travail
* refuser `~/.ssh/**`, `/root/.ssh/**`
* restreindre le réseau aux domaines/ports autorisés
* **[`policies/ci-strict.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/ci-strict.yaml)** : sûr pour les exécuteurs CI
* refuser tout ce qui se trouve en dehors de l'espace de travail
* refuser le réseau sortant sauf les registres d'artefacts
* refuser les shells interactifs sauf autorisation explicite
* auditer tout (événements récapitulatifs)
* **[`policies/agent-sandbox.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/agent-sandbox.yaml)** : mode « l'agent exécute du code inconnu »
* refus par défaut + liste d'autorisation explicite
* approuver tout accès aux identifiants/chemins
* rediriger l'utilisation d'outils réseau vers des proxys/miroirs internes
* suppression douce des opérations destructrices pour une récupération facile
---
## Exemples d'intégration d'assistants IA
Extraits prêts à l'emploi pour configurer les assistants de codage IA afin d'utiliser agentsh :
* **[Claude Code](https://github.com/canyonroad/agentsh/blob/HEAD/examples/claude/)** - Extrait CLAUDE.md pour l'intégration Claude Code
* **[Cursor](https://github.com/canyonroad/agentsh/blob/HEAD/examples/cursor/)** - Règles Cursor pour l'intégration agentsh
* **[AGENTS.md](https://github.com/canyonroad/agentsh/blob/HEAD/examples/agents/)** - Extrait générique AGENTS.md (fonctionne avec plusieurs outils IA)
> **Remarque :** Ces exemples sont destinés aux scénarios de développement local où il n'est pas pratique d'exécuter l'agent IA dans un conteneur. Pour les environnements de production ou CI/CD, préférez l'exécution d'agents dans des conteneurs avec le shim shell installé—voir [Utilisation dans Docker](#utilisation-dans-docker-avec-le-shim-shell).
---
## Références
* **Démo de protection MCP :** [`agentsh-mcp-protection-demo`](https://github.com/canyonroad/agentsh-mcp-protection-demo) - démo en direct de la détection d'exfiltration entre serveurs, du blocage de rug pull et de la génération de politiques
* **Sécurité et modèle de menace :** [`SECURITY.md`](https://github.com/canyonroad/agentsh/blob/HEAD/SECURITY.md) - ce contre quoi agentsh protège, limitations connues, liste de contrôle de l'opérateur
* **KMS externe :** [`SECURITY.md#intégration-kms-externe`](https://github.com/canyonroad/agentsh/blob/HEAD/SECURITY.md#external-kms-integration) - AWS KMS, Azure Key Vault, HashiCorp Vault, GCP Cloud KMS pour les clés d'intégrité d'audit
* Modèle de configuration : [`configs/server-config.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/server-config.yaml)
* Politique par défaut : [`configs/policies/default.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/default.yaml)
* Exemple de Dockerfile (avec shim) : [`Dockerfile.example`](https://github.com/canyonroad/agentsh/blob/HEAD/Dockerfile.example)
* **Documentation des politiques :** [`docs/operations/policies.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/operations/policies.md) - variables de politique, règles de signal, redirection réseau
* **Contrôle d'accès à la base de données :** [`docs/agentsh-db-access-spec.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/agentsh-db-access-spec.md) - périmètre d'application de la base de données exclusivement PostgreSQL, sémantique des politiques, comportement de redirection et feuille de route
* **Livre de recettes des politiques de commandes :** [`docs/cookbook/command-policies.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/cookbook/command-policies.md) - comment autoriser un nouveau binaire, quand utiliser `wrap` au lieu de `exec`, et comment déboguer un refus
* **Livre de recettes des services HTTP :** [`docs/cookbook/http-services.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/cookbook/http-services.md) - recettes pour acheminer les appels API HTTP sortants via des services déclarés avec règles et contrôle d'approbation
* **Livre de recettes des intégrations SDK Sandbox :** [`docs/cookbook/sandbox-sdk-integrations.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/cookbook/sandbox-sdk-integrations.md) - configuration `shim_install` pour Tensorlake / E2B / Modal / Daytona où les commandes s'exécutent en tant que frères du serveur agentsh
* **Compétences en rédaction de politiques :** [`skills/`](https://github.com/canyonroad/agentsh/blob/HEAD/skills/) - compétences d'assistant IA pour créer et modifier des politiques dans Claude Code, NanoClaw, etc.
* **Comparaison des plateformes :** [`docs/platform-comparison.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/platform-comparison.md) - prise en charge des fonctionnalités, scores de sécurité, performances par plateforme
* **Bubblewrap vs agentsh :** [`docs/bubblewrap-vs-agentsh-comparison.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/bubblewrap-vs-agentsh-comparison.md) - comparaison avec Bubblewrap pour le sandboxing de conteneurs Linux
* **Contrôle d'accès à la base de données :** [`docs/agentsh-db-access-spec.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/agentsh-db-access-spec.md) - taxonomie du proxy PostgreSQL, modèle d'effets, `database_rules`, règles de connexion, modèle de menace
* **Modes de sécurité et `detect` :** [`docs/security-modes.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/security-modes.md) - modes d'application, score de protection, et ce que `agentsh detect` rapporte
* **seccomp :** [`docs/seccomp.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/seccomp.md) - filtrage des appels système, interception d'exécve, blocage de famille de sockets
* **Mode ptrace :** [`docs/ptrace-support.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/ptrace-support.md) - application PTRACE_SEIZE pour les conteneurs restreints (`attach_mode`, prefiltre seccomp)
* **eBPF :** [`docs/ebpf.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/ebpf.md) - traçage réseau eBPF et application des politiques
* **Proxy LLM et DLP :** [`docs/llm-proxy.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/llm-proxy.md) - configuration du proxy intégré, motifs DLP, suivi d'utilisation
* **Guide de construction macOS :** [`docs/macos-build.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-build.md) - instructions de construction ESF+NE
* **Architecture ESF+NE macOS :** [`docs/macos-esf-ne-architecture.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-esf-ne-architecture.md) - Extension système, XPC et détails de déploiement
* **Sandbox XPC macOS :** [`docs/macos-xpc-sandbox.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-xpc-sandbox.md) - contrôle XPC/Mach IPC pour les processus en sandbox
* Variables d'environnement (tous les remplacements `AGENTSH_*`, bascules de démarrage automatique, sélection de transport) : [`docs/spec.md` §15.3 « Variables d'environnement »](https://github.com/canyonroad/agentsh/blob/HEAD/docs/spec.md#153-environment-variables)
* Architecture et flux de données (FUSE + moteur de politiques + API) : commentaires en ligne dans [`configs/server-config.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/server-config.yaml) et [`internal/netmonitor`](https://github.com/canyonroad/agentsh/blob/HEAD/internal/netmonitor)
* Aide en ligne de commande : `agentsh --help`, `agentsh exec --help`, `agentsh shim --help`
---
Créé avec l'aide d'agents pour des agents.
sandbox.env_injectenv_injectconfig.yml et les exemples de politique sous configs/.| Champ | Valeurs | Description |
|---|
visibility | silent, audit_only, warn | Comment les redirections sont journalisées/affichées |
on_failure | fail_closed, fail_open, retry_original | Ce qui se produit si la redirection échoue |
tls_mode | passthrough, rewrite_sni | Gestion TLS pour la redirection de connexion |
| Fonctionnalité | Linux | macOS | Windows |
|---|
| DNS Redirect | ✅ eBPF | ✅ pf/proxy | ✅ WinDivert |
| Connect Redirect | ✅ eBPF | ✅ pf/proxy | ✅ WinDivert |
| SNI Rewrite | ✅ | ✅ | ✅ |
| Plateforme | Blocage | Redirection | Audit |
|---|
| Linux | Oui (seccomp user-notify) | Oui | Oui |
| macOS | Non | Non | Oui (ES) |
| Windows | Partiel | Non | Oui (ETW) |