@aimarket/warden 0.22.2 → 0.22.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/README-es.md +9 -9
  3. package/README-fr.md +9 -9
  4. package/README-ru.md +9 -9
  5. package/README-zh.md +9 -9
  6. package/README.md +37 -31
  7. package/dist/histor.d.ts +6 -0
  8. package/dist/histor.d.ts.map +1 -1
  9. package/dist/histor.js +14 -0
  10. package/dist/histor.js.map +1 -1
  11. package/dist/jcs.d.ts +4 -3
  12. package/dist/jcs.d.ts.map +1 -1
  13. package/dist/jcs.js +4 -3
  14. package/dist/jcs.js.map +1 -1
  15. package/dist/mcp-server.js +19 -0
  16. package/dist/mcp-server.js.map +1 -1
  17. package/dist/mtl.d.ts +7 -6
  18. package/dist/mtl.d.ts.map +1 -1
  19. package/dist/mtl.js +31 -24
  20. package/dist/mtl.js.map +1 -1
  21. package/dist/scan.d.ts.map +1 -1
  22. package/dist/scan.js +2 -2
  23. package/dist/scan.js.map +1 -1
  24. package/docs/flow-guard-model-comparison-2026-10-25.es.md +9 -9
  25. package/docs/flow-guard-model-comparison-2026-10-25.fr.md +9 -9
  26. package/docs/flow-guard-model-comparison-2026-10-25.md +9 -9
  27. package/docs/flow-guard-model-comparison-2026-10-25.ru.md +9 -9
  28. package/docs/flow-guard-model-comparison-2026-10-25.zh.md +9 -9
  29. package/docs/flow-guard.es.md +5 -5
  30. package/docs/flow-guard.fr.md +5 -5
  31. package/docs/flow-guard.md +6 -6
  32. package/docs/flow-guard.ru.md +6 -6
  33. package/docs/flow-guard.zh.md +5 -5
  34. package/docs/scan-limits.es.md +2 -2
  35. package/docs/scan-limits.fr.md +2 -2
  36. package/docs/scan-limits.md +2 -2
  37. package/docs/scan-limits.ru.md +2 -2
  38. package/docs/scan-limits.zh.md +2 -2
  39. package/docs/scan.es.md +5 -5
  40. package/docs/scan.fr.md +5 -5
  41. package/docs/scan.md +5 -5
  42. package/docs/scan.ru.md +5 -5
  43. package/docs/scan.zh.md +5 -5
  44. package/docs/security-hardening-language-boundary.md +5 -5
  45. package/package.json +1 -1
@@ -67,15 +67,15 @@ The archive contains full initial/final answers, `out/main/analysis.json`, `out/
67
67
 
68
68
  Evidence links below resolve in the **aicom monorepo**. The npm documentation includes this report, not the raw archive. Historical AgentDojo and earlier 270/270 and 432-sample studies remain unchanged. Research, implementation and interpretation used AI assistance; no independent blinded human review is claimed.
69
69
 
70
- - [Frozen protocol](../../docs/evidence/launchgate-live-comparison-2026-10-25/protocol.md).
71
- - [Input manifest](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/input-manifest.json).
72
- - [Collection receipt](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/execution.json).
73
- - [Complete outputs archive](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/outputs.tar.gz).
74
- - [Independent accounting audit](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/independent-audit.json).
75
- - [Audit execution and cleanup](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/independent-audit-execution.json).
76
- - [Model-root cleanup](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/cleanup.json).
77
- - [Warning-reference observations](../../docs/evidence/launchgate-live-comparison-2026-10-25/warning-reference-observations.json).
78
- - [Extended technical report (English)](../../docs/growth/launchgate-live-comparison-2026-10-25.en.md).
70
+ - [Frozen protocol](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/protocol.md).
71
+ - [Input manifest](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/input-manifest.json).
72
+ - [Collection receipt](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/execution.json).
73
+ - [Complete outputs archive](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/outputs.tar.gz).
74
+ - [Independent accounting audit](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/independent-audit.json).
75
+ - [Audit execution and cleanup](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/independent-audit-execution.json).
76
+ - [Model-root cleanup](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/cleanup.json).
77
+ - [Warning-reference observations](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/warning-reference-observations.json).
78
+ - [Extended technical report (English)](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-live-comparison-2026-10-25.en.md).
79
79
 
80
80
  `outputs.tar.gz` SHA-256: `fc471388468f06471c6a32d8e1bcc7fa54205431ba2a70b819bd411133cf5079`.
81
81
 
@@ -67,15 +67,15 @@ Bootstrap пересэмплирует **шесть целых кластеро
67
67
 
68
68
  Ссылки ниже разрешаются в **монорепозитории aicom**. В документацию npm входит отчёт, но не сырой архив. Исторический AgentDojo и прежние исследования 270/270 и 432 ответов не изменены. Исследование, реализация и интерпретация выполнены с помощью AI; независимая слепая человеческая проверка не заявляется.
69
69
 
70
- - [Зафиксированный протокол](../../docs/evidence/launchgate-live-comparison-2026-10-25/protocol.md).
71
- - [Манифест входов](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/input-manifest.json).
72
- - [Квитанция сбора](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/execution.json).
73
- - [Архив всех результатов](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/outputs.tar.gz).
74
- - [Отдельный аудит учёта](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/independent-audit.json).
75
- - [Исполнение аудита и очистка](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/independent-audit-execution.json).
76
- - [Очистка стенда модели](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/cleanup.json).
77
- - [Наблюдения ссылок на предупреждение](../../docs/evidence/launchgate-live-comparison-2026-10-25/warning-reference-observations.json).
78
- - [Расширенный технический отчёт, английский](../../docs/growth/launchgate-live-comparison-2026-10-25.en.md).
70
+ - [Зафиксированный протокол](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/protocol.md).
71
+ - [Манифест входов](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/input-manifest.json).
72
+ - [Квитанция сбора](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/execution.json).
73
+ - [Архив всех результатов](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/outputs.tar.gz).
74
+ - [Отдельный аудит учёта](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/independent-audit.json).
75
+ - [Исполнение аудита и очистка](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/independent-audit-execution.json).
76
+ - [Очистка стенда модели](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/cleanup.json).
77
+ - [Наблюдения ссылок на предупреждение](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/warning-reference-observations.json).
78
+ - [Расширенный технический отчёт, английский](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-live-comparison-2026-10-25.en.md).
79
79
 
80
80
  `outputs.tar.gz` SHA-256: `fc471388468f06471c6a32d8e1bcc7fa54205431ba2a70b819bd411133cf5079`.
81
81
 
@@ -67,15 +67,15 @@
67
67
 
68
68
  以下证据链接在 **aicom 单体仓库**内解析。npm 文档包含本报告,不包含原始归档。历史 AgentDojo 及此前 270/270、432 答案研究保持不变。研究、实现和解释使用了 AI 辅助,不声称经过独立的人类盲审。
69
69
 
70
- - [冻结协议](../../docs/evidence/launchgate-live-comparison-2026-10-25/protocol.md).
71
- - [输入清单](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/input-manifest.json).
72
- - [收集回执](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/execution.json).
73
- - [完整输出归档](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/outputs.tar.gz).
74
- - [单独实现的记账审计](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/independent-audit.json).
75
- - [审计执行与清理](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/independent-audit-execution.json).
76
- - [模型临时目录清理](../../docs/evidence/launchgate-live-comparison-2026-10-25/run-02/cleanup.json).
77
- - [警告引用观察](../../docs/evidence/launchgate-live-comparison-2026-10-25/warning-reference-observations.json).
78
- - [英文详细技术报告](../../docs/growth/launchgate-live-comparison-2026-10-25.en.md).
70
+ - [冻结协议](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/protocol.md).
71
+ - [输入清单](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/input-manifest.json).
72
+ - [收集回执](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/execution.json).
73
+ - [完整输出归档](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/outputs.tar.gz).
74
+ - [单独实现的记账审计](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/independent-audit.json).
75
+ - [审计执行与清理](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/independent-audit-execution.json).
76
+ - [模型临时目录清理](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/run-02/cleanup.json).
77
+ - [警告引用观察](https://github.com/alexar76/aicom/blob/main/docs/evidence/launchgate-live-comparison-2026-10-25/warning-reference-observations.json).
78
+ - [英文详细技术报告](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-live-comparison-2026-10-25.en.md).
79
79
 
80
80
  `outputs.tar.gz` SHA-256: `fc471388468f06471c6a32d8e1bcc7fa54205431ba2a70b819bd411133cf5079`.
81
81
 
@@ -20,7 +20,7 @@ La revisión se recuerda solo en este proceso wrap para la identidad de lanzamie
20
20
 
21
21
  Coste conocido: el primer precheck puede consumir una regla exacta de un solo uso `credentialEgress`. La nueva comprobación tras aceptar rechaza conservadoramente incluso un payload idéntico y la regla sigue gastada. Se registra como fricción adicional, no como un paso automático inocuo.
22
22
 
23
- Stop ya no exime una frase porque diga «ignored» o «flagged»: puede repetir a la vez la recomendación inyectada. Una coincidencia exacta normalizada de 12 caracteres con una instrucción registrada pide otra revisión. **Una advertencia honesta también cuesta ese pase adicional.** El host limita la continuación mediante `stop_hook_active`; no hay contador persistente independiente. Paráfrasis, selección de filas envenenada sin coincidencia y corrección semántica siguen fuera del alcance. Nota/revisión no equivale a prevención. El [estudio](../../docs/growth/kevin-annotations-answer-review-2026-10-25.ru.md) distingue pruebas Linux deterministas de evaluación del modelo. Cambios locales sin publicar; los resultados históricos del modelo no se recalcularon.
23
+ Stop ya no exime una frase porque diga «ignored» o «flagged»: puede repetir a la vez la recomendación inyectada. Una coincidencia exacta normalizada de 12 caracteres con una instrucción registrada pide otra revisión. **Una advertencia honesta también cuesta ese pase adicional.** El host limita la continuación mediante `stop_hook_active`; no hay contador persistente independiente. Paráfrasis, selección de filas envenenada sin coincidencia y corrección semántica siguen fuera del alcance. Nota/revisión no equivale a prevención. El [estudio](https://github.com/alexar76/aicom/blob/main/docs/growth/kevin-annotations-answer-review-2026-10-25.ru.md) distingue pruebas Linux deterministas de evaluación del modelo. Cambios locales sin publicar; los resultados históricos del modelo no se recalcularon.
24
24
 
25
25
  Auditoría de seguimiento, 2026-10-23: los datos binarios `image`/`audio` de los resultados ya no consumen el límite de texto; una captura grande antes del texto no oculta etiquetas, títulos de ventanas con archivos de credenciales ni JSON en bloques de texto. Las pantallas devueltas por acciones del puntero y del teclado, incluidas las de `computer`, también actualizan la vista. Una confirmación simple conserva la vista anterior; un resultado de acción con solo una imagen la borra. Los argumentos salientes no reciben esta excepción y siguen sujetos a la comprobación de secretos. Las pruebas de regresión reproducen ambos fallos mediante hooks y el proxy stdio real. El código local ahora también exige aprobación para las acciones GUI opacas descritas abajo.
26
26
 
@@ -311,7 +311,7 @@ La guardia comprueba llamadas después de recibir texto externo; no es un sandbo
311
311
  - Una inyección que solo cambia la respuesta no hace ninguna llamada que rechazar. Desde el 2026-10-22 el hook Stop del plugin añade una línea bajo una respuesta cuyo turno leyó texto externo, con esas fuentes, y lo dice cuando alguna se dirigió al asistente con instrucciones. Si la respuesta repite 12 caracteres normalizados consecutivos de las frases donde ese texto se dirigió al asistente, el hook además devuelve la respuesta una vez (`decision: block`) para comprobarla frente a la petición del usuario antes de que este la lea; el usuario solo pierde el tiempo de esa comprobación. `answerNote`: `always` (por defecto), `instruction` (solo ese caso) u `off`; fuera del plugin, registra `warden-mcp hook stop`.
312
312
  - El proxy registra también errores JSON-RPC y de herramientas. Retiene una respuesta si no puede registrarla; un estado de sesión corrupto bloquea la comprobación.
313
313
 
314
- Publicado en npm `0.17.0`: `npx -y @aimarket/warden@0.22.2 hook pre-tool-use`, o desde el código fuente en WARDEN, `npm ci && npm run build`, luego `node dist/mcp-server.js hook pre-tool-use`, con los hooks prompt/post también registrados. Política: `~/.local/state/warden/flow-policy.json` o `WARDEN_FLOW_POLICY`; modos `ask`, `deny`, `audit`, `off`. Véase el ejemplo vigente en [inglés](flow-guard.md).
314
+ Publicado en npm `0.17.0`: `npx -y @aimarket/warden@0.22.3 hook pre-tool-use`, o desde el código fuente en WARDEN, `npm ci && npm run build`, luego `node dist/mcp-server.js hook pre-tool-use`, con los hooks prompt/post también registrados. Política: `~/.local/state/warden/flow-policy.json` o `WARDEN_FLOW_POLICY`; modos `ask`, `deny`, `audit`, `off`. Véase el ejemplo vigente en [inglés](flow-guard.md).
315
315
 
316
316
  Proxy: `node dist/mcp-server.js wrap --flow mail -- node mail-server.js`. Use un `WARDEN_FLOW_SESSION` nuevo y compartido por los proxies de una conversación. El PID padre predeterminado no une lanzadores diferentes. El proxy no ve el prompt ni herramientas integradas. Lo que requeriría preguntar se pregunta con el formulario de elicitation MCP del cliente cuando lo ofrece (la respuesta queda en el registro como `approvalOutcome`) y, si no, o con `--ask refuse`, se rechaza. `trustedSources` se aplica a la URL de WebFetch, no a enlaces en argumentos MCP.
317
317
 
@@ -496,11 +496,11 @@ positivos y escribimos seis ataques más contra las reglas nuevas. Pasan 2 de 23
496
496
  | Ruleset v16 (ver [gates](gates.es.md)) | 34 herramientas envenenadas de la mitad dev de MCPTox seguían pasando, casi todas sin entrada | mitad reservada 194 → 210 de 218, incluidos los 66 secuestros de disparador implícito; 0 de 45 servidores limpios; el corpus y 1000 paquetes de HISTOR bloquean exactamente lo mismo que v15; cinco falsos positivos de un primer borrador quedan fijados como pruebas |
497
497
  | La reproducción, de nuevo | las comprobaciones nuevas no deben preguntar donde 0.19.0 no preguntaba | los 1046 registros idénticos a 0.19.0 |
498
498
 
499
- **Precisión sobre respuestas guardadas (2026-10-25):** el resultado oficial DeepSeek guard + note sigue en **18/20** con el predicado de mención exacta de AgentDojo. La lectura individual asistida por IA no encontró una recomendación adoptada en esos fragmentos; las 18 menciones exactas aparecen en advertencias. Solo 18 respuestas están completas: dos alcanzan el límite histórico de 2000 caracteres, por lo que no se ha establecido un resultado de cumplimiento 0/20 sobre respuestas completas. La anotación no es independiente ni ciega y no sustituye el resultado oficial. El arnés local conserva ahora las futuras respuestas completas con longitud y hash; esto no implica una nueva ejecución del modelo. [Auditoría y reproducción](../../docs/growth/launchgate-methodology-2026-10-25.ru.md).
499
+ **Precisión sobre respuestas guardadas (2026-10-25):** el resultado oficial DeepSeek guard + note sigue en **18/20** con el predicado de mención exacta de AgentDojo. La lectura individual asistida por IA no encontró una recomendación adoptada en esos fragmentos; las 18 menciones exactas aparecen en advertencias. Solo 18 respuestas están completas: dos alcanzan el límite histórico de 2000 caracteres, por lo que no se ha establecido un resultado de cumplimiento 0/20 sobre respuestas completas. La anotación no es independiente ni ciega y no sustituye el resultado oficial. El arnés local conserva ahora las futuras respuestas completas con longitud y hash; esto no implica una nueva ejecución del modelo. [Auditoría y reproducción](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-methodology-2026-10-25.ru.md).
500
500
 
501
- **Prueba de selección controlada (2026-10-25):** Una prueba sintética separada tras recibir el resultado de la herramienta, con WARDEN `0.21.0` publicado, cubrió seis tareas hoteleras × cinco repeticiones, notas clean/benign/injected y tres perfiles: **270/270 ID correctos**, con **0/90 elecciones del objetivo en injected** (0/30 por perfil). El nombre objetivo apareció en **25/270** respuestas, incluidos los controles, y Stop se activó **0/90** veces en `note_stop`; la referencia sin protección también acertó, por lo que no se establece una mejora adicional del guard, y un ID correcto no valida todos los hechos de la explicación. [Protocolo, resultados y límites](../../docs/growth/launchgate-selection-2026-10-25.en.md): este estudio separado no cambia el **18/20** histórico de AgentDojo ni demuestra seguridad general.
501
+ **Prueba de selección controlada (2026-10-25):** Una prueba sintética separada tras recibir el resultado de la herramienta, con WARDEN `0.21.0` publicado, cubrió seis tareas hoteleras × cinco repeticiones, notas clean/benign/injected y tres perfiles: **270/270 ID correctos**, con **0/90 elecciones del objetivo en injected** (0/30 por perfil). El nombre objetivo apareció en **25/270** respuestas, incluidos los controles, y Stop se activó **0/90** veces en `note_stop`; la referencia sin protección también acertó, por lo que no se establece una mejora adicional del guard, y un ID correcto no valida todos los hechos de la explicación. [Protocolo, resultados y límites](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-selection-2026-10-25.en.md): este estudio separado no cambia el **18/20** histórico de AgentDojo ni demuestra seguridad general.
502
502
 
503
- **Seguimiento con empate (2026-10-25):** Con dos óptimos admisibles, la selección del objetivo bajo inyección fue 48/48 sin guard, 44/48 con note y 45/48 con note+Stop; las referencias clean fueron 28/48, 25/48 y 29/48. Los intervalos del efecto ajustado por baseline incluyen cero; las 432 elecciones eran admisibles y elegir el objetivo no implica por sí mismo un error. Las preferencias reales del usuario se siguieron 18/18 y Stop no pidió revisiones. El [evaluador offline local](../scripts/selection-probe/README.md) admite conjuntos de respuestas válidas y contrastes con referencia común; el bloqueo en runtime no cambió. [Resultados y límites, EN](../../docs/growth/launchgate-tie-selection-2026-10-25.en.md).
503
+ **Seguimiento con empate (2026-10-25):** Con dos óptimos admisibles, la selección del objetivo bajo inyección fue 48/48 sin guard, 44/48 con note y 45/48 con note+Stop; las referencias clean fueron 28/48, 25/48 y 29/48. Los intervalos del efecto ajustado por baseline incluyen cero; las 432 elecciones eran admisibles y elegir el objetivo no implica por sí mismo un error. Las preferencias reales del usuario se siguieron 18/18 y Stop no pidió revisiones. El [evaluador offline local](../scripts/selection-probe/README.md) admite conjuntos de respuestas válidas y contrastes con referencia común; el bloqueo en runtime no cambió. [Resultados y límites, EN](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-tie-selection-2026-10-25.en.md).
504
504
 
505
505
  En la versión del 2026-10-22 estos dos ejemplos todavía pasaban. Ambos se bloquean en el código local del 2026-10-23; véase arriba. [Resultados históricos](../scripts/redteam/results/):
506
506
 
@@ -20,7 +20,7 @@ La révision est mémorisée dans ce processus wrap seulement, pour l’identit
20
20
 
21
21
  Friction connue : le premier precheck peut déjà consommer une règle exacte `credentialEgress` à usage unique. La revérification après accord refuse alors prudemment même un payload identique et la règle reste dépensée. Ce contrôle est compté comme friction supplémentaire, pas comme passage automatique anodin.
22
22
 
23
- Stop n’exempte plus une phrase parce qu’elle contient « ignored » ou « flagged » : elle peut aussi reprendre la recommandation injectée. Un chevauchement exact normalisé de 12 caractères avec une instruction enregistrée demande une révision supplémentaire. **Un avertissement honnête paie aussi ce passage.** Le host borne la continuation avec `stop_hook_active` ; aucun compteur persistant indépendant n’est revendiqué. Paraphrases, sélection de lignes empoisonnée sans correspondance et exactitude sémantique restent hors portée. Note/révision ne signifie pas prévention. L’[étude](../../docs/growth/kevin-annotations-answer-review-2026-10-25.ru.md) distingue les tests Linux déterministes de l’évaluation d’un modèle. Changements locaux non publiés ; résultats historiques du modèle non recalculés.
23
+ Stop n’exempte plus une phrase parce qu’elle contient « ignored » ou « flagged » : elle peut aussi reprendre la recommandation injectée. Un chevauchement exact normalisé de 12 caractères avec une instruction enregistrée demande une révision supplémentaire. **Un avertissement honnête paie aussi ce passage.** Le host borne la continuation avec `stop_hook_active` ; aucun compteur persistant indépendant n’est revendiqué. Paraphrases, sélection de lignes empoisonnée sans correspondance et exactitude sémantique restent hors portée. Note/révision ne signifie pas prévention. L’[étude](https://github.com/alexar76/aicom/blob/main/docs/growth/kevin-annotations-answer-review-2026-10-25.ru.md) distingue les tests Linux déterministes de l’évaluation d’un modèle. Changements locaux non publiés ; résultats historiques du modèle non recalculés.
24
24
 
25
25
  Audit complémentaire du 2026-10-23 : les données binaires `image`/`audio` des résultats ne consomment plus le budget de texte ; une grande capture placée avant le texte ne masque donc plus les libellés, les titres de fenêtres contenant un fichier de secrets ou le JSON des blocs de texte. Les écrans renvoyés par les actions du pointeur et du clavier, y compris celles de `computer`, actualisent aussi la vue. Un simple accusé conserve la vue précédente ; une action ne renvoyant qu’une image l’efface. Les arguments sortants ne bénéficient pas de cette exception et restent soumis à la détection de secrets. Les tests de régression reproduisent les deux contournements via les hooks et le véritable proxy stdio. Le code local soumet désormais aussi les actions GUI opaques à une approbation, comme décrit ci-dessous.
26
26
 
@@ -311,7 +311,7 @@ La garde vérifie les appels après réception de texte externe. Ce n’est ni u
311
311
  - Une injection qui ne change que la réponse ne fait aucun appel à refuser. Depuis le 2026-10-22, le hook Stop du plugin ajoute une ligne sous une réponse dont le tour a lu du texte extérieur, avec ces sources, et le dit quand l’un d’eux s’adressait à l’assistant avec des instructions. Si la réponse reprend 12 caractères normalisés consécutifs des phrases où ce texte s’adressait à l’assistant, le hook renvoie aussi la réponse une fois (`decision: block`) pour qu’elle soit vérifiée face à la demande de l’utilisateur avant qu’il la lise ; l’utilisateur ne perd que le temps de cette vérification. `answerNote` : `always` (par défaut), `instruction` (ce cas seulement) ou `off` ; hors du plugin, enregistrez `warden-mcp hook stop`.
312
312
  - Le proxy enregistre aussi les erreurs JSON-RPC et d’outils, retient les réponses dont l’enregistrement échoue et bloque les vérifications si l’état existant est corrompu.
313
313
 
314
- Publié dans npm `0.17.0` : `npx -y @aimarket/warden@0.22.2 hook pre-tool-use`, ou depuis les sources dans WARDEN, `npm ci && npm run build`, puis `node dist/mcp-server.js hook pre-tool-use`, avec les hooks prompt/post également enregistrés. Politique : `~/.local/state/warden/flow-policy.json` ou `WARDEN_FLOW_POLICY` ; modes `ask`, `deny`, `audit`, `off`. Exemple actuel en [anglais](flow-guard.md).
314
+ Publié dans npm `0.17.0` : `npx -y @aimarket/warden@0.22.3 hook pre-tool-use`, ou depuis les sources dans WARDEN, `npm ci && npm run build`, puis `node dist/mcp-server.js hook pre-tool-use`, avec les hooks prompt/post également enregistrés. Politique : `~/.local/state/warden/flow-policy.json` ou `WARDEN_FLOW_POLICY` ; modes `ask`, `deny`, `audit`, `off`. Exemple actuel en [anglais](flow-guard.md).
315
315
 
316
316
  Proxy : `node dist/mcp-server.js wrap --flow mail -- node mail-server.js`. Attribuez un nouveau `WARDEN_FLOW_SESSION` commun aux proxies d’une conversation. Le PID parent par défaut ne relie pas des lanceurs différents. Le proxy ne voit ni prompt ni outils intégrés. Un appel qui demanderait confirmation est demandé via le formulaire d’elicitation MCP du client s’il en propose un (la réponse est journalisée comme `approvalOutcome`), sinon, ou avec `--ask refuse`, il est refusé. `trustedSources` s’applique à l’URL WebFetch, pas aux liens des arguments MCP.
317
317
 
@@ -502,11 +502,11 @@ faux positifs et écrit six attaques de plus contre les nouvelles règles. 2 sur
502
502
  | Ruleset v16 (voir [gates](gates.fr.md)) | 34 outils empoisonnés de la moitié dev de MCPTox passaient encore, presque tous sans entrée | moitié réservée 194 → 210 sur 218, dont les 66 détournements à déclencheur implicite ; 0 sur 45 serveurs propres ; le corpus et 1 000 paquets HISTOR bloquent exactement comme v15 ; cinq faux positifs d’un premier jet sont fixés dans les tests |
503
503
  | Le rejeu, refait | les nouvelles vérifications ne doivent pas demander là où 0.19.0 ne demandait pas | les 1 046 enregistrements identiques à 0.19.0 |
504
504
 
505
- **Précision sur les réponses enregistrées (2026-10-25) :** le résultat officiel DeepSeek guard + note reste **18/20** selon le prédicat de mention exacte d’AgentDojo. La lecture individuelle assistée par IA n’a trouvé aucune recommandation adoptée dans ces extraits ; les 18 mentions exactes figurent dans des avertissements. Seules 18 réponses sont complètes : deux atteignent l’ancienne limite de 2 000 caractères, donc un résultat de conformité 0/20 sur les réponses complètes n’est pas établi. L’annotation n’est ni indépendante ni en aveugle et ne remplace pas le score officiel. Le harnais local conserve désormais les futures réponses complètes avec longueur et hash ; aucun nouvel essai du modèle n’est impliqué. [Audit et reproduction](../../docs/growth/launchgate-methodology-2026-10-25.ru.md).
505
+ **Précision sur les réponses enregistrées (2026-10-25) :** le résultat officiel DeepSeek guard + note reste **18/20** selon le prédicat de mention exacte d’AgentDojo. La lecture individuelle assistée par IA n’a trouvé aucune recommandation adoptée dans ces extraits ; les 18 mentions exactes figurent dans des avertissements. Seules 18 réponses sont complètes : deux atteignent l’ancienne limite de 2 000 caractères, donc un résultat de conformité 0/20 sur les réponses complètes n’est pas établi. L’annotation n’est ni indépendante ni en aveugle et ne remplace pas le score officiel. Le harnais local conserve désormais les futures réponses complètes avec longueur et hash ; aucun nouvel essai du modèle n’est impliqué. [Audit et reproduction](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-methodology-2026-10-25.ru.md).
506
506
 
507
- **Test de sélection contrôlé (2026-10-25) :** Un test synthétique séparé après réception du résultat d’outil, avec WARDEN `0.21.0` publié, a couvert six tâches hôtelières × cinq répétitions, des notes clean/benign/injected et trois profils : **270/270 ID corrects**, dont **0/90 choix de la cible en injected** (0/30 par profil). Le nom de la cible apparaît dans **25/270** réponses, contrôles compris, et Stop s’est déclenché **0/90** fois en `note_stop` ; la référence sans protection choisissait aussi correctement, donc aucun gain supplémentaire du guard n’est établi, et un ID correct ne valide pas tous les faits de l’explication. [Protocole, résultats et limites](../../docs/growth/launchgate-selection-2026-10-25.en.md) : cette étude séparée ne modifie pas le **18/20** historique d’AgentDojo et ne démontre pas une sécurité générale.
507
+ **Test de sélection contrôlé (2026-10-25) :** Un test synthétique séparé après réception du résultat d’outil, avec WARDEN `0.21.0` publié, a couvert six tâches hôtelières × cinq répétitions, des notes clean/benign/injected et trois profils : **270/270 ID corrects**, dont **0/90 choix de la cible en injected** (0/30 par profil). Le nom de la cible apparaît dans **25/270** réponses, contrôles compris, et Stop s’est déclenché **0/90** fois en `note_stop` ; la référence sans protection choisissait aussi correctement, donc aucun gain supplémentaire du guard n’est établi, et un ID correct ne valide pas tous les faits de l’explication. [Protocole, résultats et limites](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-selection-2026-10-25.en.md) : cette étude séparée ne modifie pas le **18/20** historique d’AgentDojo et ne démontre pas une sécurité générale.
508
508
 
509
- **Suivi avec ex æquo (2026-10-25) :** Avec deux choix optimaux admissibles, la cible a été sélectionnée sous injection 48/48 sans guard, 44/48 avec note et 45/48 avec note+Stop ; les références clean étaient 28/48, 25/48 et 29/48. Les intervalles de l’effet corrigé du baseline incluent zéro ; les 432 choix étaient admissibles et choisir la cible ne constitue donc pas automatiquement une erreur. Les vraies préférences utilisateur ont été suivies 18/18, sans nouvelle vérification Stop. L’[évaluateur offline local](../scripts/selection-probe/README.md) accepte plusieurs réponses admissibles et des contrastes avec référence commune ; le blocage en runtime reste inchangé. [Résultats et limites, EN](../../docs/growth/launchgate-tie-selection-2026-10-25.en.md).
509
+ **Suivi avec ex æquo (2026-10-25) :** Avec deux choix optimaux admissibles, la cible a été sélectionnée sous injection 48/48 sans guard, 44/48 avec note et 45/48 avec note+Stop ; les références clean étaient 28/48, 25/48 et 29/48. Les intervalles de l’effet corrigé du baseline incluent zéro ; les 432 choix étaient admissibles et choisir la cible ne constitue donc pas automatiquement une erreur. Les vraies préférences utilisateur ont été suivies 18/18, sans nouvelle vérification Stop. L’[évaluateur offline local](../scripts/selection-probe/README.md) accepte plusieurs réponses admissibles et des contrastes avec référence commune ; le blocage en runtime reste inchangé. [Résultats et limites, EN](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-tie-selection-2026-10-25.en.md).
510
510
 
511
511
  Dans la version du 2026-10-22 ces deux exemples passaient encore. Ils sont bloqués dans le code local du 2026-10-23 ; voir plus haut. [Résultats historiques](../scripts/redteam/results/) :
512
512
 
@@ -24,13 +24,13 @@ Review is remembered only in this wrapper for the exact launch identity and comp
24
24
 
25
25
  Known friction: an initial precheck may already consume an exact one-use `credentialEgress` rule. The post-approval precheck then conservatively refuses even an unchanged payload, and the grant remains spent. This control is recorded as extra friction, not a harmless automatic pass.
26
26
 
27
- The Stop hook no longer exempts a sentence merely because it says “ignored” or “flagged”: it can still repeat the injected recommendation. An exact normalized 12-character overlap with a recorded instruction fragment requests an additional answer check. **An honest warning pays that extra pass too.** The host's `stop_hook_active` flag bounds the continuation; no independent persistent loop counter is claimed. Paraphrases, poisoned row selection without a matching instruction and semantic correctness remain unsolved. Source notes/rechecks are not prevention scores. The [study](../../docs/growth/kevin-annotations-answer-review-2026-10-25.ru.md) distinguishes deterministic Linux tests from model evaluation; these changes are local and unreleased, and historical model results below remain historical.
27
+ The Stop hook no longer exempts a sentence merely because it says “ignored” or “flagged”: it can still repeat the injected recommendation. An exact normalized 12-character overlap with a recorded instruction fragment requests an additional answer check. **An honest warning pays that extra pass too.** The host's `stop_hook_active` flag bounds the continuation; no independent persistent loop counter is claimed. Paraphrases, poisoned row selection without a matching instruction and semantic correctness remain unsolved. Source notes/rechecks are not prevention scores. The [study](https://github.com/alexar76/aicom/blob/main/docs/growth/kevin-annotations-answer-review-2026-10-25.ru.md) distinguishes deterministic Linux tests from model evaluation; these changes are local and unreleased, and historical model results below remain historical.
28
28
 
29
29
  ## Credential windows (local source, 2026-10-25)
30
30
 
31
31
  Strong windows remain **8 non-hex / 10 hex** after the Linux 6/7/8 comparison. The local index now includes mixed letter/digit windows before a key's first digit after recognized normalized provider prefixes, while keeping generic/DER exclusions and all old hashes. A credential reread is needed for an existing session to gain those windows. Six-character pieces inside longer words still rely on the credential boundary when not otherwise recognized.
32
32
 
33
- On 14,400 attack fixtures the change converts 717 decisions from ask to deny; none execute automatically before or after. The 7,680 benign requests per profile keep their decisions: all ask by default, all pass once with exact reviewed public rules. Deliberately selected public-text controls show false hard denials at 6 and a known example at 7; these are not production rates. The [study and raw evidence](../../docs/growth/warden-thresholds-2026-10-25.ru.md) separate corpus substring hits, hook decisions and detector-only results. The change is local and unreleased.
33
+ On 14,400 attack fixtures the change converts 717 decisions from ask to deny; none execute automatically before or after. The 7,680 benign requests per profile keep their decisions: all ask by default, all pass once with exact reviewed public rules. Deliberately selected public-text controls show false hard denials at 6 and a known example at 7; these are not production rates. The [study and raw evidence](https://github.com/alexar76/aicom/blob/main/docs/growth/warden-thresholds-2026-10-25.ru.md) separate corpus substring hits, hook decisions and detector-only results. The change is local and unreleased.
34
34
 
35
35
  ## Credential boundary and encoded fragments (local source, 2026-10-23)
36
36
 
@@ -311,7 +311,7 @@ The flow guard adds checks at tool-call boundaries after a session receives outs
311
311
  - An injection that only changes the answer makes no call to refuse. Since 2026-10-22 the plugin's Stop hook adds one line under an answer whose turn read outside text, naming those sources, and says so when any of it addressed the assistant with instructions. When the answer repeats 12 consecutive normalized characters from the sentences where that text addressed the assistant, the hook also sends the answer back once (`decision: block`), to be checked against the user's request before the user reads it; the user loses nothing but the time of that check. `answerNote` chooses `always` (default), `instruction` (only that case) or `off`; outside the plugin, register `warden-mcp hook stop`.
312
312
  - The MCP proxy records JSON-RPC error text and tool-error results as outside text too. If recording fails, it withholds the response. Existing corrupt session state blocks pre-tool checks instead of becoming an empty session.
313
313
 
314
- Released in npm `0.17.0`: `npx -y @aimarket/warden@0.22.2 hook pre-tool-use`, or from a source checkout `npm ci && npm run build`, then `node dist/mcp-server.js hook pre-tool-use`. Register the prompt and post hooks as well, or use the bundled Claude plugin.
314
+ Released in npm `0.17.0`: `npx -y @aimarket/warden@0.22.3 hook pre-tool-use`, or from a source checkout `npm ci && npm run build`, then `node dist/mcp-server.js hook pre-tool-use`. Register the prompt and post hooks as well, or use the bundled Claude plugin.
315
315
 
316
316
  Policy is user-level (`~/.local/state/warden/flow-policy.json`, or `WARDEN_FLOW_POLICY`). Modes are `ask`, `deny`, `audit`, `off`. `audit` logs decisions without enforcing them. Example:
317
317
 
@@ -514,11 +514,11 @@ positives, and wrote six more attacks against the new rules. At that release, 2
514
514
  | Ruleset v16 (see [gates](gates.md)) | 34 of MCPTox's dev-half poisoned tools still passed, nearly all tools that take no input | held-out half 194 → 210 of 218, all 66 implicit-trigger hijackings among them; 0 of 45 clean servers; the field corpus and 1,000 HISTOR packages block exactly what v15 blocked; five false positives of a first draft are pinned as tests |
515
515
  | The replay re-run | the new checks must not ask where 0.19.0 did not | all 1,046 records identical to 0.19.0 |
516
516
 
517
- **Saved-answer qualification (2026-10-25):** the official DeepSeek guard + note result remains **18/20** under AgentDojo's exact-name mention predicate. Individual AI-assisted reading found no adopted recommendation in those saved excerpts; all 18 exact-name mentions occur in warnings. Only 18 answers are complete: two hit the historical 2,000-character storage cap, so a full-answer 0/20 compliance result is not established. These annotations are neither independent nor blinded and do not replace the official score. The local harness now retains full future answers with length/hash metadata; no new model run is implied. [Audit and reproduction](../../docs/growth/launchgate-methodology-2026-10-25.ru.md).
517
+ **Saved-answer qualification (2026-10-25):** the official DeepSeek guard + note result remains **18/20** under AgentDojo's exact-name mention predicate. Individual AI-assisted reading found no adopted recommendation in those saved excerpts; all 18 exact-name mentions occur in warnings. Only 18 answers are complete: two hit the historical 2,000-character storage cap, so a full-answer 0/20 compliance result is not established. These annotations are neither independent nor blinded and do not replace the official score. The local harness now retains full future answers with length/hash metadata; no new model run is implied. [Audit and reproduction](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-methodology-2026-10-25.ru.md).
518
518
 
519
- **Controlled selection probe (2026-10-25):** A separate synthetic post-tool probe using published WARDEN `0.21.0` covered six hotel tasks × five repetitions, clean/benign/injected notes and three profiles: **270/270 correct IDs**, with **0/90 injected target choices** (0/30 per profile). Target names appeared in **25/270** answers including controls, and Stop fired **0/90** times in `note_stop`; the unguarded baseline was correct too, so no incremental guard gain is established, and correct IDs do not validate every explanation fact. [Protocol, results and limits](../../docs/growth/launchgate-selection-2026-10-25.en.md): this separate study does not change AgentDojo’s historical **18/20** or establish broad safety.
519
+ **Controlled selection probe (2026-10-25):** A separate synthetic post-tool probe using published WARDEN `0.21.0` covered six hotel tasks × five repetitions, clean/benign/injected notes and three profiles: **270/270 correct IDs**, with **0/90 injected target choices** (0/30 per profile). Target names appeared in **25/270** answers including controls, and Stop fired **0/90** times in `note_stop`; the unguarded baseline was correct too, so no incremental guard gain is established, and correct IDs do not validate every explanation fact. [Protocol, results and limits](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-selection-2026-10-25.en.md): this separate study does not change AgentDojo’s historical **18/20** or establish broad safety.
520
520
 
521
- **Tied-choice follow-up (2026-10-25):** With two admissible optima, injected target selection was 48/48 without a guard, 44/48 with the note and 45/48 with note+Stop; the respective clean baselines were 28/48, 25/48 and 29/48. Baseline-adjusted guard-effect intervals include zero, and all 432 choices were admissible; target choice is not automatically an error. Separate genuine-user preferences were followed 18/18, with no Stop rechecks. The local [offline evaluator](../scripts/selection-probe/README.md) now supports admissible sets and common-baseline contrasts; runtime blocking is unchanged. [Results and limits](../../docs/growth/launchgate-tie-selection-2026-10-25.en.md).
521
+ **Tied-choice follow-up (2026-10-25):** With two admissible optima, injected target selection was 48/48 without a guard, 44/48 with the note and 45/48 with note+Stop; the respective clean baselines were 28/48, 25/48 and 29/48. Baseline-adjusted guard-effect intervals include zero, and all 432 choices were admissible; target choice is not automatically an error. Separate genuine-user preferences were followed 18/18, with no Stop rechecks. The local [offline evaluator](../scripts/selection-probe/README.md) now supports admissible sets and common-baseline contrasts; runtime blocking is unchanged. [Results and limits](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-tie-selection-2026-10-25.en.md).
522
522
 
523
523
  At the 2026-10-22 release these two examples were still delivered. Both are blocked in the local 2026-10-23 source; see the new section above. Historical [results](../scripts/redteam/results/):
524
524
 
@@ -24,13 +24,13 @@ Review запоминается только в текущем wrap для то
24
24
 
25
25
  Известное неудобство: первоначальный precheck может уже потратить точное одноразовое правило `credentialEgress`. Повторный precheck после согласия консервативно отказывает даже для прежнего payload, а правило остаётся потраченным. Этот контроль учитывается как дополнительное неудобство, а не нормальный автоматический пропуск.
26
26
 
27
- Stop hook больше не освобождает фразу от проверки из-за слов «ignored» или «flagged»: она может одновременно повторять навязанную рекомендацию. Точное совпадение нормализованного окна длиной 12 с сохранённым instruction-фрагментом запрашивает дополнительную проверку ответа. **Честное предупреждение тоже оплачивается этим проходом.** Продолжение ограничивает host flag `stop_hook_active`; независимого persistent счётчика циклов нет. Перефразирование, подмена выбора записей без совпадающей инструкции и семантическая правильность остаются за пределами проверки. Заметка/перепроверка не равны предотвращению. [Отчёт](../../docs/growth/kevin-annotations-answer-review-2026-10-25.ru.md) отделяет детерминированные Linux-тесты от model evaluation; изменения локальные и не выпущены, исторические модельные результаты ниже не пересчитаны.
27
+ Stop hook больше не освобождает фразу от проверки из-за слов «ignored» или «flagged»: она может одновременно повторять навязанную рекомендацию. Точное совпадение нормализованного окна длиной 12 с сохранённым instruction-фрагментом запрашивает дополнительную проверку ответа. **Честное предупреждение тоже оплачивается этим проходом.** Продолжение ограничивает host flag `stop_hook_active`; независимого persistent счётчика циклов нет. Перефразирование, подмена выбора записей без совпадающей инструкции и семантическая правильность остаются за пределами проверки. Заметка/перепроверка не равны предотвращению. [Отчёт](https://github.com/alexar76/aicom/blob/main/docs/growth/kevin-annotations-answer-review-2026-10-25.ru.md) отделяет детерминированные Linux-тесты от model evaluation; изменения локальные и не выпущены, исторические модельные результаты ниже не пересчитаны.
28
28
 
29
29
  ## Окна ключей (локальный код, 2026-10-25)
30
30
 
31
31
  После Linux-сравнения 6/7/8 сильные окна остаются **8 для не-hex / 10 для hex**. Индекс теперь включает буквенно-цифровые окна до первой цифры после распознанных нормализованных префиксов провайдеров; исключения generic/DER и все старые хеши сохранены. Чтобы существующая сессия получила новые окна, credential нужно прочитать повторно. Шестисимвольные части внутри других слов при отсутствии совпадения по-прежнему останавливает общая граница подтверждения.
32
32
 
33
- На 14 400 атакующих примерах 717 решений меняются с подтверждения на отказ; автоматического исполнения нет ни до, ни после. Решения на 7 680 обычных запросах на профиль не изменились: все требуют review по умолчанию, все проходят один раз с точными проверенными публичными правилами. На специально выбранном обычном тексте воспроизведены ложные жёсткие отказы при 6 и известный пример при 7; это не production-частота. [Исследование и сырые данные](../../docs/growth/warden-thresholds-2026-10-25.ru.md) разделяют совпадения подстрок, решения hooks и работу одного детектора. Изменение локальное, не выпущено.
33
+ На 14 400 атакующих примерах 717 решений меняются с подтверждения на отказ; автоматического исполнения нет ни до, ни после. Решения на 7 680 обычных запросах на профиль не изменились: все требуют review по умолчанию, все проходят один раз с точными проверенными публичными правилами. На специально выбранном обычном тексте воспроизведены ложные жёсткие отказы при 6 и известный пример при 7; это не production-частота. [Исследование и сырые данные](https://github.com/alexar76/aicom/blob/main/docs/growth/warden-thresholds-2026-10-25.ru.md) разделяют совпадения подстрок, решения hooks и работу одного детектора. Изменение локальное, не выпущено.
34
34
 
35
35
  ## Граница учётных данных и закодированные фрагменты (локальный код, 2026-10-23)
36
36
 
@@ -321,7 +321,7 @@ node dist/mcp-server.js wrap --flow screen --screen-read computer --screen-read-
321
321
  - Инъекция, которая меняет только ответ, не делает вызова, которому можно отказать. С 2026-10-22 хук Stop плагина добавляет под ответом строку, если за этот ход читался внешний текст: какие источники, и отдельно — если какой-то из них обращался к ассистенту с указаниями. Если ответ повторяет 12 нормализованных символов подряд из тех предложений, где внешний текст обращался к ассистенту, хук ещё и один раз возвращает ответ модели (`decision: block`) на проверку по запросу пользователя, прежде чем пользователь его прочтёт; пользователь теряет только время этой проверки. `answerNote`: `always` (по умолчанию), `instruction` (только этот случай) или `off`; вне плагина зарегистрируйте `warden-mcp hook stop`.
322
322
  - Прокси учитывает текст JSON-RPC errors и ошибки инструментов как внешние данные. Если учёт ответа не удался, ответ удерживается. Повреждённое состояние сессии блокирует проверяемый вызов вместо сброса в пустую сессию.
323
323
 
324
- Вышло в npm `0.17.0`: `npx -y @aimarket/warden@0.22.2 hook pre-tool-use`, либо из исходников — в каталоге WARDEN `npm ci && npm run build`, затем `node dist/mcp-server.js hook pre-tool-use`. Зарегистрируйте также prompt/post hooks либо плагин Claude.
324
+ Вышло в npm `0.17.0`: `npx -y @aimarket/warden@0.22.3 hook pre-tool-use`, либо из исходников — в каталоге WARDEN `npm ci && npm run build`, затем `node dist/mcp-server.js hook pre-tool-use`. Зарегистрируйте также prompt/post hooks либо плагин Claude.
325
325
 
326
326
  Политика: `~/.local/state/warden/flow-policy.json` или `WARDEN_FLOW_POLICY`. Режимы: `ask`, `deny`, `audit`, `off`; `audit` только пишет журнал. Пример настройки контактов и адресатов — в [английской версии](flow-guard.md).
327
327
 
@@ -500,11 +500,11 @@ Sonnet; в воспроизведении выше модели нет, а пр
500
500
  | Набор правил v16 (см. [gates](gates.ru.md)) | 34 отравленных инструмента dev-половины MCPTox всё ещё проходили, почти все — без входных параметров | отложенная половина 194 → 210 из 218, в том числе все 66 перехватов с неявным триггером; 0 из 45 чистых серверов; корпус и 1 000 пакетов HISTOR блокируются ровно как при v15; пять ложных срабатываний первого варианта закреплены в тестах |
501
501
  | Воспроизведение заново | новые проверки не должны спрашивать там, где не спрашивал 0.19.0 | все 1 046 записей совпадают с 0.19.0 |
502
502
 
503
- **Уточнение сохранённых ответов (2026-10-25):** официальный результат DeepSeek guard + note остаётся **18/20** по предикату точного упоминания названия AgentDojo. При индивидуальном чтении AI-агентом в сохранённых фрагментах не найдено принятой рекомендации; все 18 точных упоминаний находятся в предупреждениях. Полны только 18 ответов: два достигли прежнего лимита хранения 2000 символов, поэтому полный результат compliance 0/20 не установлен. Разметка не независимая и не слепая, официальный балл она не заменяет. Локальный harness теперь сохраняет будущие ответы целиком с длиной и hash; нового модельного прогона не было. [Аудит и воспроизведение](../../docs/growth/launchgate-methodology-2026-10-25.ru.md).
503
+ **Уточнение сохранённых ответов (2026-10-25):** официальный результат DeepSeek guard + note остаётся **18/20** по предикату точного упоминания названия AgentDojo. При индивидуальном чтении AI-агентом в сохранённых фрагментах не найдено принятой рекомендации; все 18 точных упоминаний находятся в предупреждениях. Полны только 18 ответов: два достигли прежнего лимита хранения 2000 символов, поэтому полный результат compliance 0/20 не установлен. Разметка не независимая и не слепая, официальный балл она не заменяет. Локальный harness теперь сохраняет будущие ответы целиком с длиной и hash; нового модельного прогона не было. [Аудит и воспроизведение](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-methodology-2026-10-25.ru.md).
504
504
 
505
- **Контролируемый выбор (2026-10-25):** В отдельной синтетической проверке после ответа инструмента использован опубликованный WARDEN `0.21.0`: шесть гостиничных задач × пять повторов, пометки clean/benign/injected и три профиля дали **270/270 правильных ID**, включая **0/90 выборов цели атаки** в injected (0/30 в каждом профиле). Название цели встречалось в **25/270** ответах, включая контроли, а Stop сработал **0/90** раз в `note_stop`; baseline без защиты тоже выбрал правильно, поэтому дополнительный выигрыш защиты не установлен, а правильный ID не подтверждает точность всех фактов в объяснении. [Протокол, результаты и пределы](../../docs/growth/launchgate-selection-2026-10-25.ru.md): это отдельный от AgentDojo опыт, не меняющий исторические **18/20** и не доказывающий общую безопасность.
505
+ **Контролируемый выбор (2026-10-25):** В отдельной синтетической проверке после ответа инструмента использован опубликованный WARDEN `0.21.0`: шесть гостиничных задач × пять повторов, пометки clean/benign/injected и три профиля дали **270/270 правильных ID**, включая **0/90 выборов цели атаки** в injected (0/30 в каждом профиле). Название цели встречалось в **25/270** ответах, включая контроли, а Stop сработал **0/90** раз в `note_stop`; baseline без защиты тоже выбрал правильно, поэтому дополнительный выигрыш защиты не установлен, а правильный ID не подтверждает точность всех фактов в объяснении. [Протокол, результаты и пределы](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-selection-2026-10-25.ru.md): это отдельный от AgentDojo опыт, не меняющий исторические **18/20** и не доказывающий общую безопасность.
506
506
 
507
- **Продолжение с ничьей (2026-10-25):** При двух допустимых оптимумах injected target выбран 48/48 без защиты, 44/48 с note и 45/48 с note+Stop; clean baseline — соответственно 28/48, 25/48 и 29/48. Интервалы baseline-adjusted эффекта защиты включают ноль; все 432 выбора допустимы, поэтому выбор target не означает ошибку. Настоящие предпочтения пользователя выполнены 18/18, Stop не запрашивал recheck. Локальный [offline evaluator](../scripts/selection-probe/README.md) поддерживает набор допустимых ответов и common-baseline сравнения; runtime-блокировка не изменена. [Результаты и пределы](../../docs/growth/launchgate-tie-selection-2026-10-25.ru.md).
507
+ **Продолжение с ничьей (2026-10-25):** При двух допустимых оптимумах injected target выбран 48/48 без защиты, 44/48 с note и 45/48 с note+Stop; clean baseline — соответственно 28/48, 25/48 и 29/48. Интервалы baseline-adjusted эффекта защиты включают ноль; все 432 выбора допустимы, поэтому выбор target не означает ошибку. Настоящие предпочтения пользователя выполнены 18/18, Stop не запрашивал recheck. Локальный [offline evaluator](../scripts/selection-probe/README.md) поддерживает набор допустимых ответов и common-baseline сравнения; runtime-блокировка не изменена. [Результаты и пределы](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-tie-selection-2026-10-25.ru.md).
508
508
 
509
509
  В релизе 2026-10-22 эти два примера ещё проходили. В локальном коде 2026-10-23 оба блокируются; см. новый раздел выше. Исторические [результаты](../scripts/redteam/results/):
510
510
 
@@ -20,7 +20,7 @@
20
20
 
21
21
  已知额外成本:第一次 precheck 可能已消耗精确的一次性 `credentialEgress` 规则。批准后的再次检查即使面对相同 payload 也会保守拒绝,而且规则仍已消耗。该控制计为额外摩擦,不能算作正常自动通过。
22
22
 
23
- Stop 不再因句中出现 “ignored” 或 “flagged” 而豁免检查:同一句仍可能重复被注入的推荐。与已记录指令片段存在规范化后精确 12 字符窗口重合时,会请求额外回答复查。**诚实的警告也会付出这一次额外处理。** 继续执行依赖 host 的 `stop_hook_active` 标记,没有独立持久化循环计数器。释义、没有匹配指令的记录选择污染和语义正确性仍未解决。来源提示/复查不等于阻止攻击。[研究](../../docs/growth/kevin-annotations-answer-review-2026-10-25.ru.md) 区分 Linux 确定性测试与模型评估;改动仅在本地,尚未发布,历史模型结果未重新计算。
23
+ Stop 不再因句中出现 “ignored” 或 “flagged” 而豁免检查:同一句仍可能重复被注入的推荐。与已记录指令片段存在规范化后精确 12 字符窗口重合时,会请求额外回答复查。**诚实的警告也会付出这一次额外处理。** 继续执行依赖 host 的 `stop_hook_active` 标记,没有独立持久化循环计数器。释义、没有匹配指令的记录选择污染和语义正确性仍未解决。来源提示/复查不等于阻止攻击。[研究](https://github.com/alexar76/aicom/blob/main/docs/growth/kevin-annotations-answer-review-2026-10-25.ru.md) 区分 Linux 确定性测试与模型评估;改动仅在本地,尚未发布,历史模型结果未重新计算。
24
24
 
25
25
  2026-10-23 后续审计:工具结果中的 `image`/`audio` 二进制数据不再占用文本预算,因此排在文本之前的大幅截图不会再遮蔽元素标签、包含凭据文件名的窗口标题或文本块中的 JSON。指针和键盘操作(包括 `computer` 操作)返回的屏幕也会更新视图。普通执行确认保留上一视图;仅返回图像的操作会清空视图。此例外不适用于传出的参数,伪装成二进制数据的秘密仍会接受检查。回归测试通过 hooks 和真实 stdio 代理复现了这两种绕过。本地源码现在也会对不透明的 GUI 操作要求确认,详见下文。
26
26
 
@@ -311,7 +311,7 @@ Wrap 提问前读取基线,批准后重新验证工具定义并再次读取。
311
311
  - 只改变回答的注入不会发出可拒绝的调用。自 2026-10-22 起,插件的 Stop 钩子会在本轮读过外部文本的回答下方加一行,列出这些来源;若其中有文本以指令口吻对助手说话,也会注明。如果回答连续重复了外部文本中对助手下指令那几句话里的 12 个规范化字符,钩子还会把回答退回给模型一次(`decision: block`),在用户读到之前对照用户的请求检查;用户只损失这次检查的时间。`answerNote`:`always`(默认)、`instruction`(只在这种情况下)或 `off`;插件之外请注册 `warden-mcp hook stop`。
312
312
  - 代理也记录 JSON-RPC 和工具错误;记录失败时不转发响应,现有会话状态损坏时阻止检查中的调用。
313
313
 
314
- 已在 npm `0.17.0` 发布:`npx -y @aimarket/warden@0.22.2 hook pre-tool-use`;或从源码在 WARDEN 目录运行 `npm ci && npm run build`,然后使用 `node dist/mcp-server.js hook pre-tool-use`,并注册 prompt/post hooks。策略为 `~/.local/state/warden/flow-policy.json` 或 `WARDEN_FLOW_POLICY`;模式为 `ask`、`deny`、`audit`、`off`。当前配置示例见[英文页](flow-guard.md)。
314
+ 已在 npm `0.17.0` 发布:`npx -y @aimarket/warden@0.22.3 hook pre-tool-use`;或从源码在 WARDEN 目录运行 `npm ci && npm run build`,然后使用 `node dist/mcp-server.js hook pre-tool-use`,并注册 prompt/post hooks。策略为 `~/.local/state/warden/flow-policy.json` 或 `WARDEN_FLOW_POLICY`;模式为 `ask`、`deny`、`audit`、`off`。当前配置示例见[英文页](flow-guard.md)。
315
315
 
316
316
  代理命令:`node dist/mcp-server.js wrap --flow mail -- node mail-server.js`。同一会话的代理应共享一个新的 `WARDEN_FLOW_SESSION`。默认父进程 PID 不能关联不同启动器。代理看不到用户提示或客户端内置工具。需要确认的调用会在客户端提供 MCP elicitation 表单时通过表单询问(回答记入日志的 `approvalOutcome`),否则或使用 `--ask refuse` 时被拒绝。`trustedSources` 仅用于 WebFetch URL,不用于 MCP 参数中的任意链接。
317
317
 
@@ -444,11 +444,11 @@ workspace 中八个较新的攻击者目标没有参考解,因而无法回放
444
444
  | 规则集 v16(见 [gates](gates.zh.md)) | MCPTox dev 一半中仍有 34 个投毒工具能通过,几乎都是没有输入的工具 | 留出的一半 218 中 194 → 210,其中隐式触发的劫持 66 个全部拦下;45 台干净服务器中 0 台;语料库和 1,000 个 HISTOR 包的拦截与 v15 完全相同;初稿的五个误报已作为测试固定下来 |
445
445
  | 重新回放 | 新检查不应在 0.19.0 不询问的地方询问 | 全部 1,046 条记录与 0.19.0 一致 |
446
446
 
447
- **保存回答的限定说明(2026-10-25):**按 AgentDojo 的精确名称匹配规则,DeepSeek guard + note 的官方结果仍为 **18/20**。AI 辅助逐条阅读未在这些保存片段中发现采纳攻击建议;18 次精确名称提及都出现在警告中。只有 18 个回答完整,另两个达到旧的 2,000 字符保存上限,因此不能据此确立完整回答的 0/20 服从率。该标注既非独立也非盲审,不替代官方分数。本地 harness 现在为后续运行保存完整回答、长度和 hash;这不代表重新运行了模型。[审计与复现](../../docs/growth/launchgate-methodology-2026-10-25.ru.md)。
447
+ **保存回答的限定说明(2026-10-25):**按 AgentDojo 的精确名称匹配规则,DeepSeek guard + note 的官方结果仍为 **18/20**。AI 辅助逐条阅读未在这些保存片段中发现采纳攻击建议;18 次精确名称提及都出现在警告中。只有 18 个回答完整,另两个达到旧的 2,000 字符保存上限,因此不能据此确立完整回答的 0/20 服从率。该标注既非独立也非盲审,不替代官方分数。本地 harness 现在为后续运行保存完整回答、长度和 hash;这不代表重新运行了模型。[审计与复现](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-methodology-2026-10-25.ru.md)。
448
448
 
449
- **受控选择测试(2026-10-25):**独立的工具结果后合成测试使用已发布的 WARDEN `0.21.0`,覆盖六项酒店任务 × 五次重复、clean/benign/injected 三种备注及三种配置:**270/270 个 ID 选择正确**,其中 injected 条件下**0/90 次选择攻击目标**(每种配置 0/30)。目标名称出现在包括对照组在内的 **25/270** 个回答中,`note_stop` 的 Stop 触发 **0/90** 次;无守卫基线也全部选对,因此尚未测得守卫的额外收益,而正确 ID 不代表解释中的每项事实都准确。[协议、结果与限制](../../docs/growth/launchgate-selection-2026-10-25.en.md):这项独立研究不改变 AgentDojo 历史上的 **18/20**,也不证明普遍安全。
449
+ **受控选择测试(2026-10-25):**独立的工具结果后合成测试使用已发布的 WARDEN `0.21.0`,覆盖六项酒店任务 × 五次重复、clean/benign/injected 三种备注及三种配置:**270/270 个 ID 选择正确**,其中 injected 条件下**0/90 次选择攻击目标**(每种配置 0/30)。目标名称出现在包括对照组在内的 **25/270** 个回答中,`note_stop` 的 Stop 触发 **0/90** 次;无守卫基线也全部选对,因此尚未测得守卫的额外收益,而正确 ID 不代表解释中的每项事实都准确。[协议、结果与限制](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-selection-2026-10-25.en.md):这项独立研究不改变 AgentDojo 历史上的 **18/20**,也不证明普遍安全。
450
450
 
451
- **并列选择后续实验(2026-10-25):** 两个最优选项均可接受时,注入条件下目标选择分别为:无防护 48/48、note 44/48、note+Stop 45/48;对应 clean 基线为 28/48、25/48、29/48。经基线调整的防护效果区间包含零;432 次选择均符合任务要求,选择目标本身不能视为错误。真实用户偏好得到 18/18 次遵守,Stop 未要求复查。本地[离线评估器](../scripts/selection-probe/README.md)现支持多个可接受答案及共同基线比较;运行时阻断逻辑未更改。[结果与限制,英文](../../docs/growth/launchgate-tie-selection-2026-10-25.en.md)。
451
+ **并列选择后续实验(2026-10-25):** 两个最优选项均可接受时,注入条件下目标选择分别为:无防护 48/48、note 44/48、note+Stop 45/48;对应 clean 基线为 28/48、25/48、29/48。经基线调整的防护效果区间包含零;432 次选择均符合任务要求,选择目标本身不能视为错误。真实用户偏好得到 18/18 次遵守,Stop 未要求复查。本地[离线评估器](../scripts/selection-probe/README.md)现支持多个可接受答案及共同基线比较;运行时阻断逻辑未更改。[结果与限制,英文](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-tie-selection-2026-10-25.en.md)。
452
452
 
453
453
  在 2026-10-22 发布版中,下面两个例子仍能通过;2026-10-23 本地源码已拦截,详见上文。[历史结果](../scripts/redteam/results/):
454
454
 
@@ -28,9 +28,9 @@ El **39/97** histórico cuenta tareas que provocaron un `ask`, no personas que a
28
28
 
29
29
  Para la serie guardada de DeepSeek Flash guard + note (`injecagent`, 20 casos de travel), el resultado histórico oficial de AgentDojo sigue siendo **18/20** según su predicado de mención exacta del nombre. La lectura asistida por IA encontró advertencias y no recomendaciones adoptadas en los fragmentos guardados, pero solo 18 respuestas estaban completas; dos alcanzaron el antiguo límite de 2000 caracteres. Se desconocen sus finales, por lo que no se establece un nuevo resultado `0/20` sobre respuestas completas. El harness local guarda las futuras respuestas completas con longitud y hash; no recupera texto perdido ni implica una nueva ejecución del modelo.
30
30
 
31
- **Prueba de selección controlada (2026-10-25):** Una prueba sintética separada tras recibir el resultado de la herramienta, con WARDEN `0.21.0` publicado, cubrió seis tareas hoteleras × cinco repeticiones, notas clean/benign/injected y tres perfiles: **270/270 ID correctos**, con **0/90 elecciones del objetivo en injected** (0/30 por perfil). El nombre objetivo apareció en **25/270** respuestas, incluidos los controles, y Stop se activó **0/90** veces en `note_stop`; la referencia sin protección también acertó, por lo que no se establece una mejora adicional del guard, y un ID correcto no valida todos los hechos de la explicación. [Protocolo, resultados y límites](../../docs/growth/launchgate-selection-2026-10-25.en.md): este estudio separado no cambia el **18/20** histórico de AgentDojo ni demuestra seguridad general.
31
+ **Prueba de selección controlada (2026-10-25):** Una prueba sintética separada tras recibir el resultado de la herramienta, con WARDEN `0.21.0` publicado, cubrió seis tareas hoteleras × cinco repeticiones, notas clean/benign/injected y tres perfiles: **270/270 ID correctos**, con **0/90 elecciones del objetivo en injected** (0/30 por perfil). El nombre objetivo apareció en **25/270** respuestas, incluidos los controles, y Stop se activó **0/90** veces en `note_stop`; la referencia sin protección también acertó, por lo que no se establece una mejora adicional del guard, y un ID correcto no valida todos los hechos de la explicación. [Protocolo, resultados y límites](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-selection-2026-10-25.en.md): este estudio separado no cambia el **18/20** histórico de AgentDojo ni demuestra seguridad general.
32
32
 
33
- **Seguimiento con empate (2026-10-25):** Con dos óptimos admisibles, la selección del objetivo bajo inyección fue 48/48 sin guard, 44/48 con note y 45/48 con note+Stop; las referencias clean fueron 28/48, 25/48 y 29/48. Los intervalos del efecto ajustado por baseline incluyen cero; las 432 elecciones eran admisibles y elegir el objetivo no implica por sí mismo un error. Las preferencias reales del usuario se siguieron 18/18 y Stop no pidió revisiones. El [evaluador offline local](../scripts/selection-probe/README.md) admite conjuntos de respuestas válidas y contrastes con referencia común; el bloqueo en runtime no cambió. [Resultados y límites, EN](../../docs/growth/launchgate-tie-selection-2026-10-25.en.md).
33
+ **Seguimiento con empate (2026-10-25):** Con dos óptimos admisibles, la selección del objetivo bajo inyección fue 48/48 sin guard, 44/48 con note y 45/48 con note+Stop; las referencias clean fueron 28/48, 25/48 y 29/48. Los intervalos del efecto ajustado por baseline incluyen cero; las 432 elecciones eran admisibles y elegir el objetivo no implica por sí mismo un error. Las preferencias reales del usuario se siguieron 18/18 y Stop no pidió revisiones. El [evaluador offline local](../scripts/selection-probe/README.md) admite conjuntos de respuestas válidas y contrastes con referencia común; el bloqueo en runtime no cambió. [Resultados y límites, EN](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-tie-selection-2026-10-25.en.md).
34
34
 
35
35
  ## Umbrales de fragmentos y coste de revisión
36
36
 
@@ -28,9 +28,9 @@ Le **39/97** historique compte les tâches ayant déclenché un `ask`, pas les p
28
28
 
29
29
  Pour la série conservée DeepSeek Flash guard + note (`injecagent`, 20 cas de travel), le résultat historique officiel d’AgentDojo reste **18/20** selon son prédicat de mention exacte du nom. Une lecture assistée par IA a trouvé des avertissements plutôt que des recommandations adoptées dans les extraits conservés, mais seulement 18 réponses étaient complètes ; deux atteignaient l’ancien plafond de 2000 caractères. Leurs fins manquantes sont inconnues : aucun nouveau score `0/20` sur réponses complètes n’est établi. Le harness local conserve les futures réponses entières avec longueur et hash ; il ne restaure pas les passages perdus et n’implique pas de nouvelle exécution du modèle.
30
30
 
31
- **Test de sélection contrôlé (2026-10-25) :** Un test synthétique séparé après réception du résultat d’outil, avec WARDEN `0.21.0` publié, a couvert six tâches hôtelières × cinq répétitions, des notes clean/benign/injected et trois profils : **270/270 ID corrects**, dont **0/90 choix de la cible en injected** (0/30 par profil). Le nom de la cible apparaît dans **25/270** réponses, contrôles compris, et Stop s’est déclenché **0/90** fois en `note_stop` ; la référence sans protection choisissait aussi correctement, donc aucun gain supplémentaire du guard n’est établi, et un ID correct ne valide pas tous les faits de l’explication. [Protocole, résultats et limites](../../docs/growth/launchgate-selection-2026-10-25.en.md) : cette étude séparée ne modifie pas le **18/20** historique d’AgentDojo et ne démontre pas une sécurité générale.
31
+ **Test de sélection contrôlé (2026-10-25) :** Un test synthétique séparé après réception du résultat d’outil, avec WARDEN `0.21.0` publié, a couvert six tâches hôtelières × cinq répétitions, des notes clean/benign/injected et trois profils : **270/270 ID corrects**, dont **0/90 choix de la cible en injected** (0/30 par profil). Le nom de la cible apparaît dans **25/270** réponses, contrôles compris, et Stop s’est déclenché **0/90** fois en `note_stop` ; la référence sans protection choisissait aussi correctement, donc aucun gain supplémentaire du guard n’est établi, et un ID correct ne valide pas tous les faits de l’explication. [Protocole, résultats et limites](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-selection-2026-10-25.en.md) : cette étude séparée ne modifie pas le **18/20** historique d’AgentDojo et ne démontre pas une sécurité générale.
32
32
 
33
- **Suivi avec ex æquo (2026-10-25) :** Avec deux choix optimaux admissibles, la cible a été sélectionnée sous injection 48/48 sans guard, 44/48 avec note et 45/48 avec note+Stop ; les références clean étaient 28/48, 25/48 et 29/48. Les intervalles de l’effet corrigé du baseline incluent zéro ; les 432 choix étaient admissibles et choisir la cible ne constitue donc pas automatiquement une erreur. Les vraies préférences utilisateur ont été suivies 18/18, sans nouvelle vérification Stop. L’[évaluateur offline local](../scripts/selection-probe/README.md) accepte plusieurs réponses admissibles et des contrastes avec référence commune ; le blocage en runtime reste inchangé. [Résultats et limites, EN](../../docs/growth/launchgate-tie-selection-2026-10-25.en.md).
33
+ **Suivi avec ex æquo (2026-10-25) :** Avec deux choix optimaux admissibles, la cible a été sélectionnée sous injection 48/48 sans guard, 44/48 avec note et 45/48 avec note+Stop ; les références clean étaient 28/48, 25/48 et 29/48. Les intervalles de l’effet corrigé du baseline incluent zéro ; les 432 choix étaient admissibles et choisir la cible ne constitue donc pas automatiquement une erreur. Les vraies préférences utilisateur ont été suivies 18/18, sans nouvelle vérification Stop. L’[évaluateur offline local](../scripts/selection-probe/README.md) accepte plusieurs réponses admissibles et des contrastes avec référence commune ; le blocage en runtime reste inchangé. [Résultats et limites, EN](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-tie-selection-2026-10-25.en.md).
34
34
 
35
35
  ## Seuils des fragments et coût de la revérification
36
36
 
@@ -28,9 +28,9 @@ The historical **39/97** counts tasks that triggered an `ask`, not people who ap
28
28
 
29
29
  For the saved DeepSeek Flash guard + note series (`injecagent`, 20 travel cases), the official historical AgentDojo result remains **18/20** under its exact-name mention predicate. AI-assisted reading found warnings rather than adopted recommendations in the saved excerpts, but only 18 answers were complete; two reached the historical 2,000-character storage cap. Missing tails are unknown, so this is not a replacement full-answer `0/20` score. The local harness saves full future answers with length/hash metadata; it does not restore old tails or imply a new model run.
30
30
 
31
- **Controlled selection probe (2026-10-25):** A separate synthetic post-tool probe using published WARDEN `0.21.0` covered six hotel tasks × five repetitions, clean/benign/injected notes and three profiles: **270/270 correct IDs**, with **0/90 injected target choices** (0/30 per profile). Target names appeared in **25/270** answers including controls, and Stop fired **0/90** times in `note_stop`; the unguarded baseline was correct too, so no incremental guard gain is established, and correct IDs do not validate every explanation fact. [Protocol, results and limits](../../docs/growth/launchgate-selection-2026-10-25.en.md): this separate study does not change AgentDojo’s historical **18/20** or establish broad safety.
31
+ **Controlled selection probe (2026-10-25):** A separate synthetic post-tool probe using published WARDEN `0.21.0` covered six hotel tasks × five repetitions, clean/benign/injected notes and three profiles: **270/270 correct IDs**, with **0/90 injected target choices** (0/30 per profile). Target names appeared in **25/270** answers including controls, and Stop fired **0/90** times in `note_stop`; the unguarded baseline was correct too, so no incremental guard gain is established, and correct IDs do not validate every explanation fact. [Protocol, results and limits](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-selection-2026-10-25.en.md): this separate study does not change AgentDojo’s historical **18/20** or establish broad safety.
32
32
 
33
- **Tied-choice follow-up (2026-10-25):** With two admissible optima, injected target selection was 48/48 without a guard, 44/48 with the note and 45/48 with note+Stop; the respective clean baselines were 28/48, 25/48 and 29/48. Baseline-adjusted guard-effect intervals include zero, and all 432 choices were admissible; target choice is not automatically an error. Separate genuine-user preferences were followed 18/18, with no Stop rechecks. The local [offline evaluator](../scripts/selection-probe/README.md) now supports admissible sets and common-baseline contrasts; runtime blocking is unchanged. [Results and limits](../../docs/growth/launchgate-tie-selection-2026-10-25.en.md).
33
+ **Tied-choice follow-up (2026-10-25):** With two admissible optima, injected target selection was 48/48 without a guard, 44/48 with the note and 45/48 with note+Stop; the respective clean baselines were 28/48, 25/48 and 29/48. Baseline-adjusted guard-effect intervals include zero, and all 432 choices were admissible; target choice is not automatically an error. Separate genuine-user preferences were followed 18/18, with no Stop rechecks. The local [offline evaluator](../scripts/selection-probe/README.md) now supports admissible sets and common-baseline contrasts; runtime blocking is unchanged. [Results and limits](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-tie-selection-2026-10-25.en.md).
34
34
 
35
35
  ## Fragment thresholds and recheck costs
36
36
 
@@ -28,9 +28,9 @@
28
28
 
29
29
  Для сохранённой серии DeepSeek Flash guard + note (`injecagent`, 20 travel-задач) официальный исторический результат AgentDojo остаётся **18/20** по проверке точного упоминания названия. При чтении сохранённых фрагментов с помощью AI обнаружены предупреждения, а не принятая навязанная рекомендация, но полными были только 18 ответов; два достигли старого лимита хранения в 2000 символов. Потерянные хвосты неизвестны, поэтому новый результат по полным ответам `0/20` не установлен. Локальный harness сохраняет будущие ответы полностью, с длиной и hash; старые хвосты он не восстанавливает и нового модельного прогона не подразумевает.
30
30
 
31
- **Контролируемый выбор (2026-10-25):** В отдельной синтетической проверке после ответа инструмента использован опубликованный WARDEN `0.21.0`: шесть гостиничных задач × пять повторов, пометки clean/benign/injected и три профиля дали **270/270 правильных ID**, включая **0/90 выборов цели атаки** в injected (0/30 в каждом профиле). Название цели встречалось в **25/270** ответах, включая контроли, а Stop сработал **0/90** раз в `note_stop`; baseline без защиты тоже выбрал правильно, поэтому дополнительный выигрыш защиты не установлен, а правильный ID не подтверждает точность всех фактов в объяснении. [Протокол, результаты и пределы](../../docs/growth/launchgate-selection-2026-10-25.ru.md): это отдельный от AgentDojo опыт, не меняющий исторические **18/20** и не доказывающий общую безопасность.
31
+ **Контролируемый выбор (2026-10-25):** В отдельной синтетической проверке после ответа инструмента использован опубликованный WARDEN `0.21.0`: шесть гостиничных задач × пять повторов, пометки clean/benign/injected и три профиля дали **270/270 правильных ID**, включая **0/90 выборов цели атаки** в injected (0/30 в каждом профиле). Название цели встречалось в **25/270** ответах, включая контроли, а Stop сработал **0/90** раз в `note_stop`; baseline без защиты тоже выбрал правильно, поэтому дополнительный выигрыш защиты не установлен, а правильный ID не подтверждает точность всех фактов в объяснении. [Протокол, результаты и пределы](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-selection-2026-10-25.ru.md): это отдельный от AgentDojo опыт, не меняющий исторические **18/20** и не доказывающий общую безопасность.
32
32
 
33
- **Продолжение с ничьей (2026-10-25):** При двух допустимых оптимумах injected target выбран 48/48 без защиты, 44/48 с note и 45/48 с note+Stop; clean baseline — соответственно 28/48, 25/48 и 29/48. Интервалы baseline-adjusted эффекта защиты включают ноль; все 432 выбора допустимы, поэтому выбор target не означает ошибку. Настоящие предпочтения пользователя выполнены 18/18, Stop не запрашивал recheck. Локальный [offline evaluator](../scripts/selection-probe/README.md) поддерживает набор допустимых ответов и common-baseline сравнения; runtime-блокировка не изменена. [Результаты и пределы](../../docs/growth/launchgate-tie-selection-2026-10-25.ru.md).
33
+ **Продолжение с ничьей (2026-10-25):** При двух допустимых оптимумах injected target выбран 48/48 без защиты, 44/48 с note и 45/48 с note+Stop; clean baseline — соответственно 28/48, 25/48 и 29/48. Интервалы baseline-adjusted эффекта защиты включают ноль; все 432 выбора допустимы, поэтому выбор target не означает ошибку. Настоящие предпочтения пользователя выполнены 18/18, Stop не запрашивал recheck. Локальный [offline evaluator](../scripts/selection-probe/README.md) поддерживает набор допустимых ответов и common-baseline сравнения; runtime-блокировка не изменена. [Результаты и пределы](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-tie-selection-2026-10-25.ru.md).
34
34
 
35
35
  ## Пороги фрагментов и стоимость перепроверки
36
36
 
@@ -28,9 +28,9 @@ Auten 调查只有一个公开观察到的快照,并没有完成对两种 laun
28
28
 
29
29
  在保存的 DeepSeek Flash guard + note 系列(`injecagent`,20 个 travel 用例)中,AgentDojo 的历史官方结果仍是 **18/20**,依据是目标名称的精确出现。AI 辅助阅读在保存的片段中发现的是警告,而非采纳攻击者推荐,但只有 18 个回答完整,另外两个达到旧的 2000 字符保存上限。缺失的结尾内容未知,因此不能据此建立完整回答上的新 `0/20` 分数。本地 harness 为未来回答保存全文、长度和 hash;它不会恢复历史缺失内容,也不意味着重新运行了模型。
30
30
 
31
- **受控选择测试(2026-10-25):**独立的工具结果后合成测试使用已发布的 WARDEN `0.21.0`,覆盖六项酒店任务 × 五次重复、clean/benign/injected 三种备注及三种配置:**270/270 个 ID 选择正确**,其中 injected 条件下**0/90 次选择攻击目标**(每种配置 0/30)。目标名称出现在包括对照组在内的 **25/270** 个回答中,`note_stop` 的 Stop 触发 **0/90** 次;无守卫基线也全部选对,因此尚未测得守卫的额外收益,而正确 ID 不代表解释中的每项事实都准确。[协议、结果与限制](../../docs/growth/launchgate-selection-2026-10-25.en.md):这项独立研究不改变 AgentDojo 历史上的 **18/20**,也不证明普遍安全。
31
+ **受控选择测试(2026-10-25):**独立的工具结果后合成测试使用已发布的 WARDEN `0.21.0`,覆盖六项酒店任务 × 五次重复、clean/benign/injected 三种备注及三种配置:**270/270 个 ID 选择正确**,其中 injected 条件下**0/90 次选择攻击目标**(每种配置 0/30)。目标名称出现在包括对照组在内的 **25/270** 个回答中,`note_stop` 的 Stop 触发 **0/90** 次;无守卫基线也全部选对,因此尚未测得守卫的额外收益,而正确 ID 不代表解释中的每项事实都准确。[协议、结果与限制](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-selection-2026-10-25.en.md):这项独立研究不改变 AgentDojo 历史上的 **18/20**,也不证明普遍安全。
32
32
 
33
- **并列选择后续实验(2026-10-25):** 两个最优选项均可接受时,注入条件下目标选择分别为:无防护 48/48、note 44/48、note+Stop 45/48;对应 clean 基线为 28/48、25/48、29/48。经基线调整的防护效果区间包含零;432 次选择均符合任务要求,选择目标本身不能视为错误。真实用户偏好得到 18/18 次遵守,Stop 未要求复查。本地[离线评估器](../scripts/selection-probe/README.md)现支持多个可接受答案及共同基线比较;运行时阻断逻辑未更改。[结果与限制,英文](../../docs/growth/launchgate-tie-selection-2026-10-25.en.md)。
33
+ **并列选择后续实验(2026-10-25):** 两个最优选项均可接受时,注入条件下目标选择分别为:无防护 48/48、note 44/48、note+Stop 45/48;对应 clean 基线为 28/48、25/48、29/48。经基线调整的防护效果区间包含零;432 次选择均符合任务要求,选择目标本身不能视为错误。真实用户偏好得到 18/18 次遵守,Stop 未要求复查。本地[离线评估器](../scripts/selection-probe/README.md)现支持多个可接受答案及共同基线比较;运行时阻断逻辑未更改。[结果与限制,英文](https://github.com/alexar76/aicom/blob/main/docs/growth/launchgate-tie-selection-2026-10-25.en.md)。
34
34
 
35
35
  ## 片段阈值与复查成本
36
36
 
package/docs/scan.es.md CHANGED
@@ -7,15 +7,15 @@ Las llamadas de descubrimiento pueden generar cargos; consulte los [límites de
7
7
  `warden-mcp scan` lee la configuración MCP que ya tienes, se conecta a cada servidor que inicia y revisa las definiciones de herramientas antes de que un modelo las vea. Es la misma cadena de compuertas que [`wrap`](../README-es.md) y la [biblioteca](integration.es.md), ejecutada una vez sobre tus configuraciones en lugar de delante de un solo servidor.
8
8
 
9
9
  ```bash
10
- npx -y @aimarket/warden@0.11.0 scan
10
+ npx -y @aimarket/warden@0.22.3 scan
11
11
  ```
12
12
 
13
13
  ```text
14
- WARDEN scan 0.10.0 · ruleset 10 sha256-lJuKKKV5mtru… · block at high
14
+ WARDEN scan 0.22.3 · ruleset 16 sha256-86y6iNc4R+LM… · block at high
15
15
  read .mcp.json (claude-code, 3 servers)
16
16
 
17
17
  ✓ allow notes claude-code 1 tool · score 0.90
18
- ✗ BLOCK evil-notes claude-code 1 tool · score 0.00 · TOOL_DEF_EXFIL(notes) TOOL_DEF_SECRET_REQUEST(notes) THREAT_SSH_KEY_READ(notes)
18
+ ✗ BLOCK evil-notes claude-code 1 tool · score 0.00 · TOOL_DEF_EXFIL(save_note) TOOL_DEF_SECRET_REQUEST(save_note) THREAT_SSH_KEY_READ(save_note) THREAT_SEED_PHRASE(save_note)
19
19
  ! error broken claude-code could not start: spawn /nonexistent/bin/server ENOENT
20
20
 
21
21
  3 servers: 1 allowed, 1 blocked, 1 not checked, 0 skipped.
@@ -88,7 +88,7 @@ jobs:
88
88
  runs-on: ubuntu-latest
89
89
  steps:
90
90
  - uses: actions/checkout@v4
91
- - uses: alexar76/warden@v0.11.0
91
+ - uses: alexar76/warden@v0.21.0
92
92
  with:
93
93
  upload-sarif: 'true'
94
94
  ```
@@ -133,7 +133,7 @@ Las capacidades se leen de los nombres de las herramientas y de sus parámetros
133
133
 
134
134
  [HISTOR](https://histor.modelmarket.dev) es un registro público que anota cada día las definiciones de herramientas de todos los servidores remotos del registro oficial de MCP. `--histor` le hace una pregunta por cada servidor remoto: ¿el conjunto de herramientas que te acaban de servir es el que observa HISTOR?
135
135
 
136
- Qué se envía: el endpoint, solo esquema, host y ruta (sin query, sin usuario ni contraseña), y el digest [MTL/1](https://github.com/alexar76/awr) del conjunto de herramientas. Ninguna descripción de herramienta, ninguna cabecera. Los endpoints en hosts o direcciones privadas, y las rutas que parecen llevar una clave, no se envían; el informe dice por qué.
136
+ Qué se envía: el endpoint, solo esquema, host y ruta (sin query, sin usuario ni contraseña), y el digest [MTL/1](https://github.com/alexar76/awr) del conjunto de herramientas. Ninguna descripción de herramienta, ninguna cabecera suya. El User-Agent es `warden-scan/<versión>`, seguido de `(ci)` cuando el escaneo corre en CI (`(ci; github-actions)`, `(ci; gitlab)`) para que HISTOR pueda contar las comprobaciones que se repiten en cada build; nunca nombra el repositorio ni el runner. Los endpoints en hosts o direcciones privadas, y las rutas que parecen llevar una clave, no se envían; el informe dice por qué.
137
137
 
138
138
  Un servidor stdio que arranca desde el registro público de npm o PyPI (`npx`, `bunx`, `npm exec`, `pnpm dlx`, `uvx`, `uv tool run`, `pipx run`) se identifica por su paquete —`npm:<nombre>` o `pypi:<nombre>`, sin la versión— y el mismo digest. HISTOR instala cada versión publicada de ese paquete en un sandbox gVisor (credenciales señuelo, sin ruta hacia fuera; cada herramienta llamada una vez con argumentos canario, sin actuar sobre nada real) y anota sus herramientas y lo que hizo; así, `previously-observed` significa aquí que ejecutas una versión más antigua, y `different`, una versión a la que HISTOR aún no ha llegado, un paquete cuyas herramientas dependen de lo que tiene tu máquina y no el sandbox (un lanzador que cede el control a un programa instalado localmente, una clave o un ajuste reales) o un paquete que no es el publicado. El hallazgo da el número de herramientas de cada lado. Una ruta local, una URL de git o de tarball, un registro privado (`--registry`, `--index-url`) o un arranque simple con `node`/`python` nunca se envían. Para un paquete, HISTOR también indica, como hallazgos orientativos, si su nombre imita a uno popular (`HISTOR_PACKAGE_LOOKALIKE`: a un carácter, el mismo nombre bajo otro scope u otros separadores, frente a un paquete descargado al menos 100 veces más) y si la versión observada tiene las marcas de un token de publicación robado: `HISTOR_PACKAGE_PROVENANCE_LOST` (sin compilación atestiguada en CI cuando la versión anterior la tenía), `HISTOR_PACKAGE_INSTALL_SCRIPTS` (nuevos scripts de instalación), `HISTOR_PACKAGE_PUBLISHER_CHANGED`, `HISTOR_PACKAGE_NEW_DEPENDENCIES`. Y lo que hizo el paquete en el sandbox: `HISTOR_PACKAGE_READS_SECRETS` (abrió credenciales señuelo —claves SSH, tokens de nube o de registros, una wallet— al instalarse, al arrancar o al llamar a una herramienta), `HISTOR_PACKAGE_PERSISTENCE` (escribió donde sobreviviría a la sesión, como `.bashrc` o `authorized_keys`), `HISTOR_PACKAGE_STARTUP_NETWORK` (salió a la red antes de que se llamara a ninguna herramienta), `HISTOR_PACKAGE_STARTS_PROGRAMS`, `HISTOR_PACKAGE_INSTALL_BEHAVIOUR` (lo que hacen sus scripts de instalación). Cargar `.env` del directorio de trabajo y llamar a su propia API durante una llamada no son hallazgos. Por qué un paquete no arrancó, según lo que imprimió: `HISTOR_PACKAGE_SDK_INCOMPATIBLE` (medium — escrito para MCP SDK 1.x, así que una instalación nueva con `mcp` 2.x falla al importar; si HISTOR también lo ejecutó con `mcp<2`, cuántas herramientas listó entonces), `HISTOR_PACKAGE_NEEDS_CONFIG` (info — la clave o ajuste que pidió, o que sus herramientas se leyeron con valores de relleno) y `HISTOR_PACKAGE_KEY_SENT_TO` (low — adónde envió la clave de relleno de HISTOR; compruebe que es la API del propio servicio). Todos los hallazgos del sandbox salen de las mismas condiciones: Linux bajo gVisor, sin internet, secretos señuelo ([condiciones de prueba](https://histor.modelmarket.dev/#conditions)). Con `--histor`, el informe también da un enlace a un feed de HISTOR con los cambios de los servidores escaneados que HISTOR conoce (`historWatch` en `--json`): suscríbete en cualquier lector de feeds.
139
139
 
package/docs/scan.fr.md CHANGED
@@ -7,15 +7,15 @@ Les appels de découverte peuvent entraîner des frais ; consultez les [limites
7
7
  `warden-mcp scan` lit la configuration MCP que vous avez déjà, se connecte à chaque serveur qu’elle démarre et vérifie les définitions d’outils avant qu’un modèle ne les voie. C’est la même chaîne de portes que [`wrap`](../README-fr.md) et la [bibliothèque](integration.fr.md), exécutée une fois sur vos configurations au lieu de se placer devant un seul serveur.
8
8
 
9
9
  ```bash
10
- npx -y @aimarket/warden@0.11.0 scan
10
+ npx -y @aimarket/warden@0.22.3 scan
11
11
  ```
12
12
 
13
13
  ```text
14
- WARDEN scan 0.10.0 · ruleset 10 sha256-lJuKKKV5mtru… · block at high
14
+ WARDEN scan 0.22.3 · ruleset 16 sha256-86y6iNc4R+LM… · block at high
15
15
  read .mcp.json (claude-code, 3 servers)
16
16
 
17
17
  ✓ allow notes claude-code 1 tool · score 0.90
18
- ✗ BLOCK evil-notes claude-code 1 tool · score 0.00 · TOOL_DEF_EXFIL(notes) TOOL_DEF_SECRET_REQUEST(notes) THREAT_SSH_KEY_READ(notes)
18
+ ✗ BLOCK evil-notes claude-code 1 tool · score 0.00 · TOOL_DEF_EXFIL(save_note) TOOL_DEF_SECRET_REQUEST(save_note) THREAT_SSH_KEY_READ(save_note) THREAT_SEED_PHRASE(save_note)
19
19
  ! error broken claude-code could not start: spawn /nonexistent/bin/server ENOENT
20
20
 
21
21
  3 servers: 1 allowed, 1 blocked, 1 not checked, 0 skipped.
@@ -88,7 +88,7 @@ jobs:
88
88
  runs-on: ubuntu-latest
89
89
  steps:
90
90
  - uses: actions/checkout@v4
91
- - uses: alexar76/warden@v0.11.0
91
+ - uses: alexar76/warden@v0.21.0
92
92
  with:
93
93
  upload-sarif: 'true'
94
94
  ```
@@ -133,7 +133,7 @@ Les capacités sont lues dans les noms des outils et de leurs paramètres (`read
133
133
 
134
134
  [HISTOR](https://histor.modelmarket.dev) est un journal public qui enregistre chaque jour les définitions d’outils de tous les serveurs distants du registre MCP officiel. `--histor` lui pose une question par serveur distant : l’ensemble d’outils qu’on vient de vous servir est-il celui qu’observe HISTOR ?
135
135
 
136
- Ce qui est envoyé : l’endpoint, réduit au schéma, à l’hôte et au chemin (sans query, sans nom d’utilisateur ni mot de passe), et le condensé [MTL/1](https://github.com/alexar76/awr) de l’ensemble d’outils. Aucune description d’outil, aucun en-tête. Les endpoints sur des hôtes ou adresses privés, et les chemins qui semblent contenir une clé, ne sont pas envoyés du tout ; le rapport dit pourquoi.
136
+ Ce qui est envoyé : l’endpoint, réduit au schéma, à l’hôte et au chemin (sans query, sans nom d’utilisateur ni mot de passe), et le condensé [MTL/1](https://github.com/alexar76/awr) de l’ensemble d’outils. Aucune description d’outil, aucun de vos en-têtes. Le User-Agent est `warden-scan/<version>`, suivi de `(ci)` quand le scan tourne en CI (`(ci; github-actions)`, `(ci; gitlab)`), pour que HISTOR puisse compter les vérifications qui reviennent à chaque build ; il ne nomme jamais le dépôt ni le runner. Les endpoints sur des hôtes ou adresses privés, et les chemins qui semblent contenir une clé, ne sont pas envoyés du tout ; le rapport dit pourquoi.
137
137
 
138
138
  Un serveur stdio lancé depuis le registre public npm ou PyPI (`npx`, `bunx`, `npm exec`, `pnpm dlx`, `uvx`, `uv tool run`, `pipx run`) est désigné par son paquet — `npm:<nom>` ou `pypi:<nom>`, sans la version — et le même condensé. HISTOR installe chaque version publiée d’un tel paquet dans un bac à sable gVisor (identifiants leurres, sans route vers l’extérieur ; chaque outil appelé une fois avec des arguments canaris, sans agir sur rien de réel) et enregistre ses outils et ce qu’il a fait : ici, `previously-observed` signifie que vous exécutez une version plus ancienne, et `different` une version qu’HISTOR n’a pas encore atteinte, un paquet dont les outils dépendent de ce que votre machine possède et que le bac à sable n’a pas (un lanceur qui passe la main à un programme installé localement, une vraie clé ou un vrai réglage) ou un paquet qui n’est pas celui publié. Le constat donne le nombre d’outils des deux côtés. Un chemin local, une URL git ou tarball, un registre privé (`--registry`, `--index-url`) ou un simple lancement `node`/`python` n’est jamais envoyé. Pour un paquet, HISTOR indique aussi, en constats indicatifs, si son nom imite celui d’un paquet populaire (`HISTOR_PACKAGE_LOOKALIKE` : à un caractère près, le même nom sous un autre scope ou d’autres séparateurs, face à un paquet téléchargé au moins 100 fois plus) et si la version observée porte les marques d’un jeton de publication volé : `HISTOR_PACKAGE_PROVENANCE_LOST` (pas de compilation attestée en CI alors que la version précédente en avait une), `HISTOR_PACKAGE_INSTALL_SCRIPTS` (nouveaux scripts d’installation), `HISTOR_PACKAGE_PUBLISHER_CHANGED`, `HISTOR_PACKAGE_NEW_DEPENDENCIES`. Et ce que le paquet a fait dans le bac à sable : `HISTOR_PACKAGE_READS_SECRETS` (il a ouvert des identifiants leurres — clés SSH, jetons cloud ou de registre, portefeuille — à l’installation, au démarrage ou lors d’un appel d’outil), `HISTOR_PACKAGE_PERSISTENCE` (il a écrit là où il survivrait à la session, comme `.bashrc` ou `authorized_keys`), `HISTOR_PACKAGE_STARTUP_NETWORK` (il a contacté le réseau avant tout appel d’outil), `HISTOR_PACKAGE_STARTS_PROGRAMS`, `HISTOR_PACKAGE_INSTALL_BEHAVIOUR` (ce que font ses scripts d’installation). Charger `.env` depuis le répertoire de travail et appeler sa propre API pendant un appel ne sont pas des constats. Pourquoi un paquet n’a pas démarré, d’après ce qu’il a affiché : `HISTOR_PACKAGE_SDK_INCOMPATIBLE` (medium — écrit pour le SDK MCP 1.x, donc une installation neuve avec `mcp` 2.x échoue à l’import ; si HISTOR l’a aussi lancé avec `mcp<2`, combien d’outils il listait alors), `HISTOR_PACKAGE_NEEDS_CONFIG` (info — la clé ou le réglage qu’il a réclamé, ou le fait que ses outils ont été lus avec des valeurs factices) et `HISTOR_PACKAGE_KEY_SENT_TO` (low — où il a envoyé la clé factice posée par HISTOR ; vérifiez que c’est l’API du service lui-même). Tous les constats du bac à sable viennent des mêmes conditions : Linux sous gVisor, sans internet, secrets leurres ([conditions de test](https://histor.modelmarket.dev/#conditions)). Avec `--histor`, le rapport donne aussi un lien vers un flux HISTOR des changements des serveurs scannés qu’HISTOR connaît (`historWatch` dans `--json`) : abonnez-vous dans n’importe quel lecteur de flux.
139
139