diff --git a/docs/ar/cli/audit.mdx b/docs/ar/cli/audit.mdx new file mode 100644 index 0000000..2043bb1 --- /dev/null +++ b/docs/ar/cli/audit.mdx @@ -0,0 +1,100 @@ +--- +title: تدقيق الجلسات السابقة (نسخة تجريبية) +description: "عد عدد مرات قيام الوكيل بأشياء مهدرة أو محفوفة بالمخاطر عبر النصوص السابقة" +--- + + + **ميزة تجريبية.** `failproofai audit` تُطلق كنسخة تجريبية بينما نجمع التعليقات المبكرة. قد تتغير أعلام سطر الأوامر وتنسيق الإخراج وكتالوج كاشفات التدقيق فقط قبل الإصدار المستقر التالي. قادم قريباً جداً — يرجى فتح مشكلة إذا بدا شيء ما خاطئاً. + + +```bash +failproofai audit [options] +``` + +يفحص نصوص CLI للوكيل السابقة على هذا الجهاز (Claude Code و Codex و Copilot و Cursor و OpenCode و Pi و Gemini) ويُبلّغ عن عدد مرات قيام الوكيل بأشياء مصممة failproofai لإيقافها — فحوصات متغيرات البيئة والدفع القسري وبادئات `cd ` الزائدة وحلقات sleep-polling وإعادة قراءة الملفات المعدّلة للتو والمزيد. + +بالنسبة لكل نص، يتم إعادة تشغيل كل حدث استخدام أداة من خلال سياسات 39 مدمجة **و** من خلال 8 كاشفات تدقيق فقط تلتقط الأنماط التي لم تغطها السياسات في وقت التشغيل بعد. يتم تجميع الأعداد لكل سياسة / كاشف عبر جميع الجلسات. + +## الخيارات + +| العلم | الوصف | +|------|--------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | تقصر على CLI واحد أو أكثر (مفصول بمسافات أو مكرر). الافتراضي: الـ 7 جميعاً. | +| `--project ` | تقصر على الجلسات التي يطابق فيها `cwd` هذا المسار. قابل للتكرار. | +| `--since 7d\|30d\|2026-04-01` | فقط الجلسات التي تقع فيها mtime النص ضمن النافذة. | +| `--policy ` | تقصر على اسم سياسة أو كاشف واحد. قابل للتكرار. | +| `--limit N` | أعلى N صف في الجدول (الافتراضي 20). | +| `--show-examples` | تضمين أمر مثال واحد لكل صف في الجدول. | +| `--report ` | مسار تقرير Markdown (الافتراضي `./failproofai-audit.md`). | +| `--no-report` | تخطي كتابة تقرير Markdown. | +| `--json` | طباعة JSON إلى stdout بدلاً من الجدول. تعني `--no-report` ما لم يتم تمرير `--report` أيضاً. | +| `--no-cache` | تجاوز ذاكرة التخزين المؤقت لكل نص في `~/.failproofai/cache/audit/`. | + +## كاشفات التدقيق فقط + +تكتشف أنماط السلوك "الغبي" التي لم تُطبّق (حتى الآن) في الوقت الفعلي. تعمل فقط أثناء `audit` ولا تحظر أبداً استدعاء أداة حي. + +| الكاشف | ما يعده | +|---|---| +| `redundant-cd-cwd` | أوامر Bash التي تبدأ بـ `cd && …` رغم أن الأوامر تعمل بالفعل في `cwd`. | +| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` على ملف مصدر واحد — استخدم أداة `Read`. | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` تعديلات موضعية — استخدم أداة `Edit`. | +| `prefer-write-over-heredoc` | Heredoc / متعدد الأسطر `echo > file` كتابة الملفات — استخدم أداة `Write`. | +| `sleep-polling-loop` | `sleep N` طويل (≥ 30s) أو `while …; sleep …; done` حلقات polling. | +| `find-from-root` | `find /` و `find /home` و `find /usr` وما إلى ذلك — حصر النطاق إلى `cwd` بدلاً من ذلك. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n` تخطي الخطافات. | +| `reread-after-edit` | `Read` لملف تم `Edit`/`Write` للتو في نفس الجلسة. | + +## الإخراج + +الإخراج الافتراضي عبارة عن جدول ANSI إلى stdout بالإضافة إلى تقرير markdown منقسم في `./failproofai-audit.md`. كلاهما يجمّع الضربات حسب الفئة (Sanitize / Wasteful / Risky / ...) مع أعداد الضربات وأعداد المشاريع وحتى ثلاث أوامر مثال لكل صف. + +يطبع `--json` الإخراج الذي يمكن قراءته بواسطة الآلة: + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## أمثلة + +```bash +# فحص كل شيء عبر كل CLI على هذا الجهاز +failproofai audit + +# آخر 30 يوماً فقط، Claude فقط +failproofai audit --cli claude --since 30d + +# عرض الأمثلة للضربات الأعلى +failproofai audit --show-examples --limit 10 + +# التعمق في سياسة واحدة +failproofai audit --policy protect-env-vars --policy block-force-push + +# إخراج قابل للقراءة الآلية +failproofai audit --json > audit.json +``` + +## ملاحظات + +- **ذاكرة التخزين المؤقت.** يتم تخزين نتائج كل نص مؤقتاً في `~/.failproofai/cache/audit/.json` يفتاح على `(mtime, size, engineVersion, detectorVersion)`. ذاكرة التخزين المؤقت تبطل تلقائياً عند تغيير كود السياسة أو الكاشف. +- **بدون تحوير.** يعاد تشغيل التدقيق في وضع القراءة فقط. يتم تخطي `warn-repeated-tool-calls` لأن ملفه الجانبي لكل جلسة سيتم تعديله بخلاف ذلك. +- **تخطي سياسات سير العمل.** سياسات `require-*-before-stop` تطلق فقط على أحداث `Stop` و `execSync` ضد حالة git الحية — ليس لديها تفسير معنى "ماذا كان سيحدث في 2025" لذا لا تظهر في أعداد التدقيق. +- **تخطي السياسات المخصصة.** خطافات مخصصة يوفرها المستخدم لا تُعاد تشغيلها (قد تكون تغيرت منذ الجلسة الأصلية). \ No newline at end of file diff --git a/docs/de/cli/audit.mdx b/docs/de/cli/audit.mdx new file mode 100644 index 0000000..c21de4c --- /dev/null +++ b/docs/de/cli/audit.mdx @@ -0,0 +1,100 @@ +--- +title: Vergangene Sitzungen prüfen (Beta) +description: "Zählt, wie oft der Agent in vergangenen Transkripten verschwenderische oder riskante Aktionen durchgeführt hat" +--- + + + **Beta-Funktion.** `failproofai audit` wird als Beta-Version veröffentlicht, während wir erstes Feedback sammeln. CLI-Flags, Ausgabeformat und der Katalog der Audit-spezifischen Detektoren können sich vor dem nächsten stabilen Release ändern. Wird in Kürze live geschaltet – bitte öffne ein Issue, wenn etwas nicht stimmt. + + +```bash +failproofai audit [options] +``` + +Durchsucht vergangene Agent-CLI-Transkripte auf diesem Rechner (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) und zeigt, wie oft der Agent Dinge getan hat, die failproofai verhindern soll – Umgebungsvariablen-Abfragen, Force-Pushes, redundante `cd `-Präfixe, Sleep-Polling-Schleifen, erneutes Lesen gerade bearbeiteter Dateien und mehr. + +Für jedes Transkript wird jedes Tool-Use-Ereignis durch die 39 integrierten Richtlinien **und** durch 8 Audit-spezifische Detektoren wiederholt, die Muster erkennen, die noch nicht durch Laufzeit-Richtlinien abgedeckt sind. Treffer werden pro Richtlinie / Detektor über alle Sitzungen hinweg aggregiert. + +## Optionen + +| Flag | Beschreibung | +|------|-------------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | Auf eine oder mehrere CLIs beschränken (durch Leerzeichen getrennt oder wiederholt). Standard: alle 7. | +| `--project ` | Auf Sitzungen beschränken, deren `cwd` diesem Pfad entspricht. Wiederholbar. | +| `--since 7d\|30d\|2026-04-01` | Nur Sitzungen, deren Transkript-mtime innerhalb des Zeitfensters liegt. | +| `--policy ` | Auf einen Richtlinien- oder Detektornamen beschränken. Wiederholbar. | +| `--limit N` | Anzahl der Zeilen in der Tabelle (Standard: 20). | +| `--show-examples` | Ein Beispielbefehl pro Zeile in der Tabelle einbeziehen. | +| `--report ` | Pfad für den Markdown-Bericht (Standard: `./failproofai-audit.md`). | +| `--no-report` | Schreiben des Markdown-Berichts überspringen. | +| `--json` | JSON auf stdout ausgeben statt der Tabelle. Impliziert `--no-report`, sofern nicht auch `--report` angegeben. | +| `--no-cache` | Den transkript-bezogenen Ergebnis-Cache unter `~/.failproofai/cache/audit/` umgehen. | + +## Audit-spezifische Detektoren + +Diese erkennen Muster für „unnötiges Verhalten", die (noch) nicht in Echtzeit durchgesetzt werden. Sie laufen nur während `audit` und blockieren niemals einen Live-Tool-Aufruf. + +| Detektor | Was gezählt wird | +|---|---| +| `redundant-cd-cwd` | Bash-Befehle, die mit `cd && …` beginnen, obwohl Befehle bereits in `cwd` ausgeführt werden. | +| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` auf eine einzelne Quelldatei – nutze stattdessen das `Read`-Tool. | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` In-Place-Bearbeitungen – nutze stattdessen das `Edit`-Tool. | +| `prefer-write-over-heredoc` | Heredoc- / mehrzeilige `echo > file`-Schreibvorgänge – nutze stattdessen das `Write`-Tool. | +| `sleep-polling-loop` | Lange `sleep N` (≥ 30s) oder `while …; sleep …; done`-Polling-Schleifen. | +| `find-from-root` | `find /`, `find /home`, `find /usr` usw. – auf `cwd` eingrenzen. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, wodurch Hooks übersprungen werden. | +| `reread-after-edit` | `Read` einer Datei, die in derselben Sitzung gerade per `Edit`/`Write` bearbeitet wurde. | + +## Ausgabe + +Die Standardausgabe ist eine ANSI-Tabelle auf stdout sowie ein gegliederter Markdown-Bericht unter `./failproofai-audit.md`. Beide gruppieren Treffer nach Kategorie (Sanitize / Wasteful / Risky / …) mit Trefferanzahl, Projektanzahl und bis zu drei Beispielbefehlen pro Zeile. + +`--json` erzeugt maschinenlesbare Ausgabe: + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## Beispiele + +```bash +# Alles über alle CLIs auf diesem Rechner scannen +failproofai audit + +# Nur die letzten 30 Tage, nur Claude +failproofai audit --cli claude --since 30d + +# Beispiele für die häufigsten Treffer anzeigen +failproofai audit --show-examples --limit 10 + +# Eine einzelne Richtlinie genauer untersuchen +failproofai audit --policy protect-env-vars --policy block-force-push + +# Maschinenlesbare Ausgabe +failproofai audit --json > audit.json +``` + +## Hinweise + +- **Cache.** Transkript-bezogene Ergebnisse werden unter `~/.failproofai/cache/audit/.json` zwischengespeichert, mit dem Schlüssel `(mtime, size, engineVersion, detectorVersion)`. Der Cache wird automatisch invalidiert, wenn sich der Richtlinien- oder Detektorcode ändert. +- **Keine Änderungen.** Das Audit läuft im Nur-Lese-Modus. `warn-repeated-tool-calls` wird übersprungen, da sein sitzungsbezogener Sidecar sonst verändert würde. +- **Workflow-Richtlinien werden übersprungen.** `require-*-before-stop`-Richtlinien werden nur bei `Stop`-Ereignissen ausgelöst und führen `execSync` gegen den Live-Git-Zustand aus – sie haben keine sinnvolle Interpretation im Sinne von „was wäre 2025 passiert?" und erscheinen daher nicht in den Audit-Zählungen. +- **Benutzerdefinierte Richtlinien werden übersprungen.** Vom Nutzer bereitgestellte benutzerdefinierte Hooks werden nicht wiederholt (sie können sich seit der ursprünglichen Sitzung geändert haben). \ No newline at end of file diff --git a/docs/es/cli/audit.mdx b/docs/es/cli/audit.mdx new file mode 100644 index 0000000..5583cde --- /dev/null +++ b/docs/es/cli/audit.mdx @@ -0,0 +1,104 @@ +--- +title: Auditar sesiones pasadas (beta) +description: "Cuenta con qué frecuencia el agente realizó acciones costosas o riesgosas en transcripciones anteriores" +--- + + + **Función beta.** `failproofai audit` se lanza en beta mientras recopilamos + comentarios iniciales. Los flags de CLI, el formato de salida y el catálogo + de detectores exclusivos de auditoría pueden cambiar antes del próximo corte + estable. Entrará en funcionamiento próximamente — abre un issue si algo + parece incorrecto. + + +```bash +failproofai audit [options] +``` + +Analiza las transcripciones pasadas del agente CLI en esta máquina (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) e informa con qué frecuencia el agente realizó acciones que failproofai está diseñado para detener: comprobaciones de variables de entorno, force pushes, prefijos redundantes `cd `, bucles de sleep-polling, relectura de archivos recién editados y más. + +Por cada transcripción, cada evento de uso de herramienta se reprocesa a través de las 39 políticas integradas **y** de 8 detectores exclusivos de auditoría que identifican patrones que aún no están cubiertos por las políticas en tiempo real. Los conteos se agregan por política / detector en todas las sesiones. + +## Opciones + +| Flag | Descripción | +|------|-------------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | Restringe a uno o más CLIs (separados por espacios o repetidos). Por defecto: los 7. | +| `--project ` | Restringe a sesiones cuyo `cwd` coincida con esta ruta. Se puede repetir. | +| `--since 7d\|30d\|2026-04-01` | Solo sesiones cuyo mtime de transcripción esté dentro del intervalo. | +| `--policy ` | Restringe a una política o nombre de detector. Se puede repetir. | +| `--limit N` | Las N filas superiores de la tabla (por defecto 20). | +| `--show-examples` | Incluye un comando de ejemplo por fila en la tabla. | +| `--report ` | Ruta del informe en Markdown (por defecto `./failproofai-audit.md`). | +| `--no-report` | Omite la generación del informe en Markdown. | +| `--json` | Imprime JSON en stdout en lugar de la tabla. Implica `--no-report` a menos que también se pase `--report`. | +| `--no-cache` | Omite la caché de resultados por transcripción en `~/.failproofai/cache/audit/`. | + +## Detectores exclusivos de auditoría + +Estos detectan patrones de "comportamiento ineficiente" que aún no se aplican en tiempo real. Solo se ejecutan durante `audit` y nunca bloquean una llamada a herramienta en vivo. + +| Detector | Qué cuenta | +|---|---| +| `redundant-cd-cwd` | Comandos Bash que comienzan con `cd && …` aunque los comandos ya se ejecutan en `cwd`. | +| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` en un único archivo fuente — usa la herramienta `Read`. | +| `prefer-edit-over-sed-awk` | Ediciones en el lugar con `sed -i` / `awk … > file` — usa la herramienta `Edit`. | +| `prefer-write-over-heredoc` | Escritura de archivos con heredoc / `echo > file` multilínea — usa la herramienta `Write`. | +| `sleep-polling-loop` | `sleep N` prolongado (≥ 30s) o bucles de polling `while …; sleep …; done`. | +| `find-from-root` | `find /`, `find /home`, `find /usr`, etc. — limita el alcance a `cwd`. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, que omite los hooks. | +| `reread-after-edit` | `Read` de un archivo que acaba de ser modificado con `Edit`/`Write` en la misma sesión. | + +## Salida + +La salida predeterminada es una tabla ANSI en stdout más un informe Markdown con secciones en `./failproofai-audit.md`. Ambos agrupan los resultados por categoría (Sanitize / Wasteful / Risky / …) con recuentos de hits, recuentos de proyectos y hasta tres comandos de ejemplo por fila. + +`--json` genera salida legible por máquina: + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## Ejemplos + +```bash +# Analizar todo en cada CLI de esta máquina +failproofai audit + +# Solo los últimos 30 días, únicamente Claude +failproofai audit --cli claude --since 30d + +# Mostrar ejemplos para los hits principales +failproofai audit --show-examples --limit 10 + +# Profundizar en una política específica +failproofai audit --policy protect-env-vars --policy block-force-push + +# Salida legible por máquina +failproofai audit --json > audit.json +``` + +## Notas + +- **Caché.** Los resultados por transcripción se almacenan en caché en `~/.failproofai/cache/audit/.json` con clave `(mtime, size, engineVersion, detectorVersion)`. La caché se invalida automáticamente cuando cambia el código de políticas o detectores. +- **Sin mutaciones.** La auditoría se reproduce en modo de solo lectura. `warn-repeated-tool-calls` se omite porque de lo contrario se modificaría su archivo auxiliar por sesión. +- **Políticas de flujo de trabajo omitidas.** Las políticas `require-*-before-stop` solo se activan en eventos `Stop` y ejecutan `execSync` contra el estado git en vivo — no tienen una interpretación significativa de "qué habría pasado en 2025", por lo que no aparecen en los recuentos de auditoría. +- **Políticas personalizadas omitidas.** Los hooks personalizados proporcionados por el usuario no se reproducen (pueden haber cambiado desde la sesión original). \ No newline at end of file diff --git a/docs/fr/cli/audit.mdx b/docs/fr/cli/audit.mdx new file mode 100644 index 0000000..f8856bd --- /dev/null +++ b/docs/fr/cli/audit.mdx @@ -0,0 +1,100 @@ +--- +title: Audit des sessions passées (bêta) +description: "Comptabilisez la fréquence des comportements inefficaces ou risqués de l'agent dans les transcriptions passées" +--- + + + **Fonctionnalité bêta.** `failproofai audit` est disponible en version bêta le temps de recueillir les premiers retours. Les options CLI, le format de sortie et le catalogue de détecteurs exclusifs à l'audit sont susceptibles d'évoluer avant la prochaine version stable. Mise en ligne imminente — n'hésitez pas à ouvrir une issue si quelque chose vous semble anormal. + + +```bash +failproofai audit [options] +``` + +Analyse les transcriptions passées de l'agent CLI sur cette machine (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) et indique la fréquence à laquelle l'agent a effectué des actions que failproofai est conçu pour bloquer — vérifications de variables d'environnement, force push, préfixes `cd ` redondants, boucles de polling avec sleep, re-lecture de fichiers récemment modifiés, et bien plus encore. + +Pour chaque transcription, chaque événement d'utilisation d'outil est rejoué à travers les 39 politiques intégrées **ainsi que** 8 détecteurs exclusifs à l'audit qui identifient des patterns non encore couverts par les politiques en temps réel. Les comptages sont agrégés par politique / détecteur sur l'ensemble des sessions. + +## Options + +| Option | Description | +|------|-------------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | Restreindre à un ou plusieurs CLI (séparés par des espaces ou répétés). Par défaut : les 7. | +| `--project ` | Restreindre aux sessions dont le `cwd` correspond à ce chemin. Peut être répété. | +| `--since 7d\|30d\|2026-04-01` | Uniquement les sessions dont le mtime de la transcription se situe dans la fenêtre temporelle. | +| `--policy ` | Restreindre à une politique ou un nom de détecteur. Peut être répété. | +| `--limit N` | Les N premières lignes du tableau (par défaut : 20). | +| `--show-examples` | Inclure un exemple de commande par ligne dans le tableau. | +| `--report ` | Chemin du rapport Markdown (par défaut : `./failproofai-audit.md`). | +| `--no-report` | Ne pas générer le rapport Markdown. | +| `--json` | Afficher le JSON sur stdout au lieu du tableau. Implique `--no-report` sauf si `--report` est également précisé. | +| `--no-cache` | Contourner le cache de résultats par transcription situé dans `~/.failproofai/cache/audit/`. | + +## Détecteurs exclusifs à l'audit + +Ces détecteurs identifient des patterns de comportement inefficace qui ne sont pas (encore) appliqués en temps réel. Ils ne s'exécutent que lors de l'`audit` et ne bloquent jamais un appel d'outil en production. + +| Détecteur | Ce qu'il comptabilise | +|---|---| +| `redundant-cd-cwd` | Commandes Bash commençant par `cd && …` alors que les commandes s'exécutent déjà dans `cwd`. | +| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` sur un seul fichier source — utilisez plutôt l'outil `Read`. | +| `prefer-edit-over-sed-awk` | Modifications en place avec `sed -i` / `awk … > file` — utilisez plutôt l'outil `Edit`. | +| `prefer-write-over-heredoc` | Écriture de fichiers par heredoc / `echo > file` multi-lignes — utilisez plutôt l'outil `Write`. | +| `sleep-polling-loop` | `sleep N` long (≥ 30s) ou boucles de polling `while …; sleep …; done`. | +| `find-from-root` | `find /`, `find /home`, `find /usr`, etc. — limitez la portée à `cwd`. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, qui contourne les hooks. | +| `reread-after-edit` | `Read` d'un fichier qui vient d'être modifié via `Edit`/`Write` dans la même session. | + +## Sortie + +La sortie par défaut est un tableau ANSI sur stdout ainsi qu'un rapport Markdown structuré dans `./failproofai-audit.md`. Les deux regroupent les correspondances par catégorie (Sanitize / Wasteful / Risky / …) avec le nombre de correspondances, le nombre de projets concernés et jusqu'à trois exemples de commandes par ligne. + +`--json` produit une sortie lisible par machine : + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## Exemples + +```bash +# Analyser tout ce qui concerne chaque CLI sur cette machine +failproofai audit + +# Uniquement les 30 derniers jours, Claude uniquement +failproofai audit --cli claude --since 30d + +# Afficher des exemples pour les correspondances les plus fréquentes +failproofai audit --show-examples --limit 10 + +# Examiner en détail une politique spécifique +failproofai audit --policy protect-env-vars --policy block-force-push + +# Sortie lisible par machine +failproofai audit --json > audit.json +``` + +## Remarques + +- **Cache.** Les résultats par transcription sont mis en cache dans `~/.failproofai/cache/audit/.json`, indexés par `(mtime, size, engineVersion, detectorVersion)`. Le cache est automatiquement invalidé lorsque le code des politiques ou des détecteurs change. +- **Aucune mutation.** L'audit se rejoue en mode lecture seule. `warn-repeated-tool-calls` est ignoré car son fichier sidecar par session serait sinon modifié. +- **Politiques de workflow ignorées.** Les politiques `require-*-before-stop` se déclenchent uniquement sur les événements `Stop` et exécutent `execSync` sur l'état git en cours — elles n'ont pas d'interprétation significative du type « que se serait-il passé en 2025 », et n'apparaissent donc pas dans les comptages de l'audit. +- **Politiques personnalisées ignorées.** Les hooks personnalisés fournis par l'utilisateur ne sont pas rejoués (ils ont pu évoluer depuis la session d'origine). \ No newline at end of file diff --git a/docs/he/cli/audit.mdx b/docs/he/cli/audit.mdx new file mode 100644 index 0000000..0182015 --- /dev/null +++ b/docs/he/cli/audit.mdx @@ -0,0 +1,100 @@ +--- +title: 审计过去的会话 (beta) +description: "统计代理在过去的文字记录中浪费或风险操作的频率" +--- + + + **Beta 功能。** `failproofai audit` 作为 beta 版本推出,我们正在收集早期反馈。CLI 标志、输出格式和仅限审计的检测器目录可能在下一个稳定版本发布前更改。即将上线 — 如果有任何问题,请开启 issue。 + + +```bash +failproofai audit [options] +``` + +扫描此机器上过去的代理 CLI 文字记录(Claude Code、Codex、Copilot、Cursor、OpenCode、Pi、Gemini),并报告代理执行 failproofai 旨在阻止的操作的频率 — 环境变量检查、强制推送、冗余的 `cd ` 前缀、睡眠轮询循环、重新读取刚编辑的文件等。 + +对于每个文字记录,每个工具使用事件都会通过 39 个内置策略 **以及** 8 个仅限审计的检测器进行重放,这些检测器捕获运行时策略尚未覆盖的模式。计数会在所有会话中按策略/检测器进行聚合。 + +## 选项 + +| 标志 | 描述 | +|------|-------------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | 限制为一个或多个 CLI(空格分隔或重复)。默认:全部 7 个。 | +| `--project ` | 限制为 `cwd` 匹配此路径的会话。可重复。 | +| `--since 7d\|30d\|2026-04-01` | 仅限于文字记录 mtime 在此时间窗口内的会话。 | +| `--policy ` | 限制为一个策略或检测器名称。可重复。 | +| `--limit N` | 表格中的前 N 行(默认 20)。 | +| `--show-examples` | 在表格的每一行中包含一个示例命令。 | +| `--report ` | Markdown 报告路径(默认 `./failproofai-audit.md`)。 | +| `--no-report` | 跳过写入 markdown 报告。 | +| `--json` | 将 JSON 输出到 stdout 而不是表格。除非也传递了 `--report`,否则隐含 `--no-report`。 | +| `--no-cache` | 绕过 `~/.failproofai/cache/audit/` 处的每个文字记录结果缓存。 | + +## 仅限审计的检测器 + +这些检测"愚蠢行为"模式,这些模式(尚)未在实时强制执行。它们仅在 `audit` 期间运行,永远不会阻止实时工具调用。 + +| 检测器 | 它计数的内容 | +|---|---| +| `redundant-cd-cwd` | 以 `cd && …` 开头的 Bash 命令,即使命令已在 `cwd` 中运行。 | +| `prefer-edit-over-read-cat` | 在单个源文件上执行 `cat`/`head`/`tail`/`less`/`more` — 使用 `Read` 工具。 | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` 就地编辑 — 使用 `Edit` 工具。 | +| `prefer-write-over-heredoc` | Heredoc / 多行 `echo > file` 写入文件 — 使用 `Write` 工具。 | +| `sleep-polling-loop` | 长 `sleep N`(≥ 30s)或 `while …; sleep …; done` 轮询循环。 | +| `find-from-root` | `find /`、`find /home`、`find /usr` 等 — 改为作用于 `cwd`。 | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`,跳过钩子。 | +| `reread-after-edit` | `Read` 同一会话中刚被 `Edit`/`Write` 的文件。 | + +## 输出 + +默认输出是到 stdout 的 ANSI 表格加上 `./failproofai-audit.md` 处的分段 markdown 报告。两者都按类别(Sanitize / Wasteful / Risky / …)分组,包含命中计数、项目计数和每行最多三个示例命令。 + +`--json` 输出机器可读的输出: + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## 示例 + +```bash +# 扫描此机器上所有 CLI 中的所有内容 +failproofai audit + +# 仅最近 30 天,仅 Claude +failproofai audit --cli claude --since 30d + +# 显示前几个命中的示例 +failproofai audit --show-examples --limit 10 + +# 深入查看一个策略 +failproofai audit --policy protect-env-vars --policy block-force-push + +# 机器可读的输出 +failproofai audit --json > audit.json +``` + +## 注意事项 + +- **缓存。** 每个文字记录的结果缓存在 `~/.failproofai/cache/audit/.json` 处,由 `(mtime, size, engineVersion, detectorVersion)` 键化。当策略或检测器代码更改时,缓存会自动失效。 +- **无变更。** 审计在只读模式下重放。`warn-repeated-tool-calls` 被跳过,因为其按会话的辅助文件会被修改。 +- **工作流策略被跳过。** `require-*-before-stop` 策略仅在 `Stop` 事件上和针对实时 git 状态的 `execSync` 上触发 — 它们没有有意义的"2025 年会发生什么"解释,所以它们不会出现在审计计数中。 +- **自定义策略被跳过。** 用户提供的自定义钩子不会被重放(它们可能自原始会话以来已更改)。 \ No newline at end of file diff --git a/docs/hi/cli/audit.mdx b/docs/hi/cli/audit.mdx new file mode 100644 index 0000000..fda5138 --- /dev/null +++ b/docs/hi/cli/audit.mdx @@ -0,0 +1,100 @@ +--- +title: पिछली सेशन्स का ऑडिट करें (beta) +description: "पिछली ट्रांसक्रिप्ट्स के आर-पार एजेंट ने कितनी बार बेकार या जोखिम भरे काम किए, इसकी गिनती करें" +--- + + + **Beta फीचर।** `failproofai audit` beta के रूप में शिप हो रहा है जबकि हम शुरुआती फीडबैक एकत्र कर रहे हैं। CLI फ्लैग्स, आउटपुट फॉर्मेट, और audit-only डिटेक्टर कैटलॉग अगले स्थिर संस्करण से पहले बदल सकते हैं। शीघ्र ही लाइव होने वाला है — अगर कुछ गलत लगे तो कृपया एक issue खोलें। + + +```bash +failproofai audit [options] +``` + +इस मशीन पर पिछली एजेंट CLI ट्रांसक्रिप्ट्स को स्कैन करता है (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) और रिपोर्ट करता है कि एजेंट ने failproofai को रोकने के लिए बनाई गई चीजें कितनी बार कीं — env-var चेक्स, force pushes, अनावश्यक `cd ` प्रीफिक्स, sleep-polling लूप्स, अभी संपादित की गई फाइलों को फिर से पढ़ना, और अधिक। + +प्रत्येक ट्रांसक्रिप्ट के लिए, हर tool-use ईवेंट को 39 builtin policies **और** 8 audit-only डिटेक्टर्स के माध्यम से रीप्ले किया जाता है जो ऐसे पैटर्न्स को पकड़ते हैं जो अभी तक runtime policies द्वारा कवर नहीं किए गए हैं। गिनती सभी सेशन्स में प्रति policy / डिटेक्टर एकत्रित की जाती है। + +## विकल्प + +| फ्लैग | विवरण | +|------|-------------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | एक या अधिक CLIs तक सीमित करें (स्पेस-सेपरेटेड या दोहराए जाएं)। डिफ़ॉल्ट: सभी 7। | +| `--project ` | सेशन्स तक सीमित करें जिनका `cwd` इस पथ से मेल खाता हो। दोहराने योग्य। | +| `--since 7d\|30d\|2026-04-01` | केवल सेशन्स जिनकी ट्रांसक्रिप्ट mtime विंडो के अंदर है। | +| `--policy ` | एक policy या डिटेक्टर नाम तक सीमित करें। दोहराने योग्य। | +| `--limit N` | टेबल में top-N पंक्तियां (डिफ़ॉल्ट 20)। | +| `--show-examples` | टेबल में प्रति पंक्ति एक उदाहरण कमांड शामिल करें। | +| `--report ` | Markdown रिपोर्ट पथ (डिफ़ॉल्ट `./failproofai-audit.md`)। | +| `--no-report` | Markdown रिपोर्ट लिखना छोड़ दें। | +| `--json` | टेबल के बजाय stdout पर JSON प्रिंट करें। `--report` भी पास नहीं किया जाता तो `--no-report` का अर्थ है। | +| `--no-cache` | `~/.failproofai/cache/audit/` पर per-transcript result कैश को बाईपास करें। | + +## Audit-only डिटेक्टर्स + +ये "stupid behavior" पैटर्न्स को detect करते हैं जो (अभी तक) real time में लागू नहीं किए जाते। वे केवल `audit` के दौरान चलते हैं और कभी भी live tool call को block नहीं करते। + +| डिटेक्टर | यह क्या गिनती करता है | +|---|---| +| `redundant-cd-cwd` | Bash कमांड्स जो `cd && …` से शुरू होती हैं भले ही कमांड्स पहले से ही `cwd` में चल रहे हों। | +| `prefer-edit-over-read-cat` | एक single स्रोत फाइल पर `cat`/`head`/`tail`/`less`/`more` — `Read` tool का उपयोग करें। | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` in-place edits — `Edit` tool का उपयोग करें। | +| `prefer-write-over-heredoc` | Heredoc / multi-line `echo > file` फाइलें लिखना — `Write` tool का उपयोग करें। | +| `sleep-polling-loop` | लंबे `sleep N` (≥ 30s) या `while …; sleep …; done` polling लूप्स। | +| `find-from-root` | `find /`, `find /home`, `find /usr`, आदि — `cwd` पर scope करें। | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, hooks को छोड़ना। | +| `reread-after-edit` | एक फाइल का `Read` जो अभी-अभी उसी सेशन में `Edit`/`Write` की गई थी। | + +## आउटपुट + +डिफ़ॉल्ट आउटपुट stdout के लिए एक ANSI टेबल है और `./failproofai-audit.md` पर एक sectioned markdown रिपोर्ट है। दोनों हिट्स को category के अनुसार group करते हैं (Sanitize / Wasteful / Risky / …) hit counts, project counts, और प्रति पंक्ति तीन तक उदाहरण कमांड्स के साथ। + +`--json` machine-readable आउटपुट emit करता है: + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## उदाहरण + +```bash +# इस मशीन पर हर CLI में सब कुछ स्कैन करें +failproofai audit + +# केवल पिछले 30 दिन, Claude केवल +failproofai audit --cli claude --since 30d + +# top hits के लिए उदाहरण दिखाएं +failproofai audit --show-examples --limit 10 + +# एक policy में drill करें +failproofai audit --policy protect-env-vars --policy block-force-push + +# Machine-readable आउटपुट +failproofai audit --json > audit.json +``` + +## नोट्स + +- **कैश।** Per-transcript परिणाम `~/.failproofai/cache/audit/.json` पर `(mtime, size, engineVersion, detectorVersion)` द्वारा key किए हुए कैश किए जाते हैं। जब policy या डिटेक्टर कोड बदलते हैं तो कैश स्वचालित रूप से invalidate हो जाता है। +- **कोई mutation नहीं।** ऑडिट read-only mode में रीप्ले करता है। `warn-repeated-tool-calls` को छोड़ दिया जाता है क्योंकि इसके per-session sidecar को अन्यथा संशोधित किया जाएगा। +- **Workflow policies छोड़ दिए गए।** `require-*-before-stop` policies केवल `Stop` ईवेंट्स और live git state के विरुद्ध `execSync` पर fire होती हैं — उनके पास कोई सार्थक "2025 में क्या हुआ होता" का interpretation नहीं है, इसलिए वे audit counts में दिखाई नहीं देते। +- **कस्टम policies छोड़ दिए गए।** User-supplied कस्टम hooks को रीप्ले नहीं किया जाता (वे original session के बाद से बदल सकते हैं)। \ No newline at end of file diff --git a/docs/it/cli/audit.mdx b/docs/it/cli/audit.mdx new file mode 100644 index 0000000..190d4ed --- /dev/null +++ b/docs/it/cli/audit.mdx @@ -0,0 +1,104 @@ +--- +title: Audit delle sessioni passate (beta) +description: "Conta con quale frequenza l'agente ha compiuto azioni inefficienti o rischiose nelle trascrizioni passate" +--- + + + **Funzionalità beta.** `failproofai audit` è in distribuzione come beta mentre + raccogliamo i feedback iniziali. I flag CLI, il formato di output e il catalogo + dei rilevatori solo audit potrebbero cambiare prima della prossima versione + stabile. Sarà disponibile a breve — apri una issue se qualcosa non ti sembra + corretta. + + +```bash +failproofai audit [options] +``` + +Scansiona le trascrizioni CLI passate degli agenti su questa macchina (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) e segnala con quale frequenza l'agente ha fatto cose che failproofai è costruito per fermare — controlli delle variabili d'ambiente, force push, prefissi `cd ` ridondanti, loop con sleep-polling, ri-lettura di file appena modificati e altro ancora. + +Per ogni trascrizione, ogni evento tool-use viene riprodotto attraverso le 39 policy builtin **e** attraverso 8 rilevatori solo audit che catturano pattern non ancora coperti dalle policy di runtime. I conteggi vengono aggregati per policy / rilevatore in tutte le sessioni. + +## Opzioni + +| Flag | Descrizione | +|------|-------------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | Limita a una o più CLI (separate da spazi o ripetute). Predefinito: tutti e 7. | +| `--project ` | Limita alle sessioni il cui `cwd` corrisponde a questo percorso. Ripetibile. | +| `--since 7d\|30d\|2026-04-01` | Solo sessioni la cui trascrizione mtime è entro questa finestra. | +| `--policy ` | Limita a un nome di policy o rilevatore. Ripetibile. | +| `--limit N` | Prime N righe nella tabella (predefinito 20). | +| `--show-examples` | Includi un comando di esempio per riga nella tabella. | +| `--report ` | Percorso del report Markdown (predefinito `./failproofai-audit.md`). | +| `--no-report` | Salta la scrittura del report Markdown. | +| `--json` | Stampa JSON su stdout invece della tabella. Implica `--no-report` a meno che `--report` non sia anche passato. | +| `--no-cache` | Bypassa la cache per-trascrizione in `~/.failproofai/cache/audit/`. | + +## Rilevatori solo audit + +Questi rilevano pattern di "comportamento stupido" non ancora (o non) applicati in tempo reale. Vengono eseguiti solo durante `audit` e non bloccano mai una chiamata tool live. + +| Rilevatore | Cosa conta | +|---|---| +| `redundant-cd-cwd` | Comandi Bash che iniziano con `cd && …` anche se i comandi vengono già eseguiti in `cwd`. | +| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` su un singolo file sorgente — usa lo strumento `Read`. | +| `prefer-edit-over-sed-awk` | Modifiche in-place `sed -i` / `awk … > file` — usa lo strumento `Edit`. | +| `prefer-write-over-heredoc` | Heredoc / `echo > file` multi-riga per scrivere file — usa lo strumento `Write`. | +| `sleep-polling-loop` | `sleep N` lungo (≥ 30s) o loop di polling `while …; sleep …; done`. | +| `find-from-root` | `find /`, `find /home`, `find /usr`, ecc. — limita l'ambito a `cwd`. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, saltando gli hook. | +| `reread-after-edit` | `Read` di un file appena `Edit`/`Write` nella stessa sessione. | + +## Output + +L'output predefinito è una tabella ANSI su stdout più un report Markdown suddiviso in sezioni in `./failproofai-audit.md`. Entrambi raggruppano gli hit per categoria (Sanitize / Wasteful / Risky / …) con conteggi degli hit, conteggi dei progetti e fino a tre comandi di esempio per riga. + +`--json` emette output leggibile dalla macchina: + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## Esempi + +```bash +# Scansiona tutto attraverso ogni CLI su questa macchina +failproofai audit + +# Solo gli ultimi 30 giorni, solo Claude +failproofai audit --cli claude --since 30d + +# Mostra esempi per gli hit principali +failproofai audit --show-examples --limit 10 + +# Analizza una policy +failproofai audit --policy protect-env-vars --policy block-force-push + +# Output leggibile dalla macchina +failproofai audit --json > audit.json +``` + +## Note + +- **Cache.** I risultati per-trascrizione vengono memorizzati nella cache in `~/.failproofai/cache/audit/.json` codificati per `(mtime, size, engineVersion, detectorVersion)`. La cache si invalida automaticamente quando il codice di policy o rilevatore cambia. +- **Nessuna mutazione.** L'audit si riproduce in modalità sola lettura. `warn-repeated-tool-calls` viene saltato perché il suo sidecar per-sessione altrimenti verrebbe modificato. +- **Policy di flusso di lavoro saltate.** Le policy `require-*-before-stop` si attivano solo su eventi `Stop` e `execSync` contro lo stato git live — non hanno un'interpretazione significativa di "cosa sarebbe successo nel 2025", quindi non compaiono nei conteggi dell'audit. +- **Policy personalizzate saltate.** Gli hook personalizzati forniti dall'utente non vengono riprodotti (potrebbero essere cambiati dalla sessione originale). \ No newline at end of file diff --git a/docs/ja/cli/audit.mdx b/docs/ja/cli/audit.mdx new file mode 100644 index 0000000..ecd0690 --- /dev/null +++ b/docs/ja/cli/audit.mdx @@ -0,0 +1,100 @@ +--- +title: 過去セッションの監査(ベータ版) +description: "過去のトランスクリプト全体で、エージェントが無駄または危険な操作を行った頻度をカウントする" +--- + + + **ベータ機能。** `failproofai audit` は早期フィードバックを収集しながらベータ版として提供されています。CLIフラグ、出力形式、および監査専用のディテクターカタログは次の安定版リリースまでに変更される可能性があります。まもなく公開予定 — 問題があれば、お気軽にissueを開いてください。 + + +```bash +failproofai audit [options] +``` + +このマシン上にある過去のエージェントCLIトランスクリプト(Claude Code、Codex、Copilot、Cursor、OpenCode、Pi、Gemini)をスキャンし、failproofaiが防ぐために設計された操作(環境変数チェック、フォースプッシュ、冗長な `cd ` プレフィックス、スリープポーリングループ、編集直後のファイル再読み込みなど)がどの程度発生したかを報告します。 + +各トランスクリプトについて、すべてのツール使用イベントが39個の組み込みポリシー**と**、ランタイムポリシーではまだカバーされていないパターンを検出する8個の監査専用ディテクターを通じて再実行されます。カウントはすべてのセッションにわたってポリシー/ディテクターごとに集計されます。 + +## オプション + +| フラグ | 説明 | +|------|-------------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | 1つ以上のCLIに限定します(スペース区切りまたは繰り返し指定)。デフォルト: 全7種。 | +| `--project ` | `cwd` がこのパスに一致するセッションに限定します。繰り返し指定可能。 | +| `--since 7d\|30d\|2026-04-01` | トランスクリプトのmtimeが指定ウィンドウ内のセッションのみ対象。 | +| `--policy ` | 特定のポリシーまたはディテクター名に限定します。繰り返し指定可能。 | +| `--limit N` | テーブルの上位N行(デフォルト20)。 | +| `--show-examples` | テーブルの各行にコマンド例を1つ含めます。 | +| `--report ` | Markdownレポートのパス(デフォルト `./failproofai-audit.md`)。 | +| `--no-report` | Markdownレポートの書き込みをスキップします。 | +| `--json` | テーブルの代わりにJSONをstdoutに出力します。`--report` も指定しない限り `--no-report` を暗黙的に有効にします。 | +| `--no-cache` | `~/.failproofai/cache/audit/` のトランスクリプトごとの結果キャッシュをバイパスします。 | + +## 監査専用ディテクター + +これらは、リアルタイムでは(まだ)適用されていない「非効率な動作」パターンを検出します。`audit` 実行時のみ動作し、ライブのツール呼び出しをブロックすることはありません。 + +| ディテクター | カウント対象 | +|---|---| +| `redundant-cd-cwd` | コマンドがすでに `cwd` で実行されているにもかかわらず、`cd && …` で始まるBashコマンド。 | +| `prefer-edit-over-read-cat` | 単一のソースファイルへの `cat`/`head`/`tail`/`less`/`more` — `Read` ツールを使用してください。 | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` によるインプレース編集 — `Edit` ツールを使用してください。 | +| `prefer-write-over-heredoc` | ヒアドキュメント / 複数行の `echo > file` によるファイル書き込み — `Write` ツールを使用してください。 | +| `sleep-polling-loop` | 長い `sleep N`(≥ 30秒)または `while …; sleep …; done` ポーリングループ。 | +| `find-from-root` | `find /`、`find /home`、`find /usr` など — `cwd` にスコープを限定してください。 | +| `git-commit-no-verify` | フックをスキップする `git commit … --no-verify` / `-n`。 | +| `reread-after-edit` | 同一セッション内で `Edit`/`Write` した直後のファイルの `Read`。 | + +## 出力 + +デフォルト出力は、stdoutへのANSIテーブルと `./failproofai-audit.md` へのセクション分けされたMarkdownレポートです。どちらもヒットをカテゴリ(Sanitize / Wasteful / Risky / …)ごとにグループ化し、ヒット数、プロジェクト数、および各行に最大3つのコマンド例を含みます。 + +`--json` はマシンリーダブルな出力を生成します: + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## 使用例 + +```bash +# このマシン上のすべてのCLIに対してスキャンを実行 +failproofai audit + +# 過去30日間、Claude のみ +failproofai audit --cli claude --since 30d + +# 上位ヒットのコマンド例を表示 +failproofai audit --show-examples --limit 10 + +# 特定のポリシーを詳しく調べる +failproofai audit --policy protect-env-vars --policy block-force-push + +# マシンリーダブルな出力 +failproofai audit --json > audit.json +``` + +## 注意事項 + +- **キャッシュ。** トランスクリプトごとの結果は `~/.failproofai/cache/audit/.json` にキャッシュされ、`(mtime, size, engineVersion, detectorVersion)` をキーとして使用します。ポリシーまたはディテクターのコードが変更されると、キャッシュは自動的に無効化されます。 +- **変更なし。** 監査は読み取り専用モードで再実行されます。`warn-repeated-tool-calls` はスキップされます。これは、そのセッションごとのサイドカーが変更されてしまうためです。 +- **ワークフローポリシーのスキップ。** `require-*-before-stop` ポリシーは `Stop` イベント時のみ発火し、ライブのgit状態に対して `execSync` を実行します。これらは「2025年に何が起きていたか」という意味のある解釈ができないため、監査カウントには表示されません。 +- **カスタムポリシーのスキップ。** ユーザー指定のカスタムフックは再実行されません(元のセッション以降に変更されている可能性があるため)。 \ No newline at end of file diff --git a/docs/ko/cli/audit.mdx b/docs/ko/cli/audit.mdx new file mode 100644 index 0000000..e59a5f7 --- /dev/null +++ b/docs/ko/cli/audit.mdx @@ -0,0 +1,100 @@ +--- +title: 이전 세션 감사 (베타) +description: "지난 트랜스크립트에서 에이전트가 낭비적이거나 위험한 행동을 얼마나 자주 했는지 집계" +--- + + + **베타 기능.** `failproofai audit`은 초기 피드백을 수집하는 동안 베타로 제공됩니다. 다음 안정 버전 출시 전에 CLI 플래그, 출력 형식, 감사 전용 감지기 목록이 변경될 수 있습니다. 곧 정식 출시 예정입니다 — 이상한 점이 있으면 이슈를 등록해 주세요. + + +```bash +failproofai audit [options] +``` + +이 머신에 있는 에이전트 CLI 트랜스크립트(Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini)를 스캔하여, 에이전트가 failproofai가 차단하도록 설계된 행동을 얼마나 자주 했는지 보고합니다 — 환경 변수 확인, 강제 푸시, 불필요한 `cd ` 접두사, sleep 폴링 루프, 방금 편집한 파일 재읽기 등이 포함됩니다. + +각 트랜스크립트에 대해 모든 도구 사용 이벤트가 39개의 내장 정책 **및** 런타임 정책으로 아직 커버되지 않은 패턴을 감지하는 8개의 감사 전용 감지기를 통해 재실행됩니다. 집계된 카운트는 모든 세션에 걸쳐 정책/감지기별로 표시됩니다. + +## 옵션 + +| 플래그 | 설명 | +|------|-------------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | 하나 이상의 CLI로 제한 (공백 구분 또는 반복). 기본값: 전체 7개. | +| `--project ` | `cwd`가 이 경로와 일치하는 세션으로 제한. 반복 사용 가능. | +| `--since 7d\|30d\|2026-04-01` | 트랜스크립트 mtime이 지정한 기간 내에 있는 세션만 포함. | +| `--policy ` | 특정 정책 또는 감지기 이름으로 제한. 반복 사용 가능. | +| `--limit N` | 테이블에 표시할 상위 N개 행 (기본값 20). | +| `--show-examples` | 테이블의 각 행에 예시 명령어 하나씩 포함. | +| `--report ` | 마크다운 보고서 경로 (기본값 `./failproofai-audit.md`). | +| `--no-report` | 마크다운 보고서 작성 생략. | +| `--json` | 테이블 대신 JSON을 stdout으로 출력. `--report`도 함께 지정하지 않으면 `--no-report`를 암묵적으로 적용. | +| `--no-cache` | `~/.failproofai/cache/audit/`의 트랜스크립트별 결과 캐시를 우회. | + +## 감사 전용 감지기 + +실시간으로 강제되지 않는(아직) "비효율적인 행동" 패턴을 감지합니다. `audit` 실행 중에만 동작하며 실시간 도구 호출을 절대 차단하지 않습니다. + +| 감지기 | 집계 대상 | +|---|---| +| `redundant-cd-cwd` | 명령이 이미 `cwd`에서 실행되고 있음에도 `cd && …`로 시작하는 Bash 명령. | +| `prefer-edit-over-read-cat` | 단일 소스 파일에 대한 `cat`/`head`/`tail`/`less`/`more` 사용 — `Read` 도구를 사용해야 함. | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` 인플레이스 편집 — `Edit` 도구를 사용해야 함. | +| `prefer-write-over-heredoc` | Heredoc / 여러 줄 `echo > file`로 파일 작성 — `Write` 도구를 사용해야 함. | +| `sleep-polling-loop` | 긴 `sleep N` (≥ 30초) 또는 `while …; sleep …; done` 폴링 루프. | +| `find-from-root` | `find /`, `find /home`, `find /usr` 등 — `cwd`로 범위를 좁혀야 함. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`으로 훅을 건너뜀. | +| `reread-after-edit` | 같은 세션에서 `Edit`/`Write`한 직후 해당 파일을 `Read`하는 경우. | + +## 출력 + +기본 출력은 stdout에 ANSI 테이블을 표시하고 `./failproofai-audit.md`에 섹션별 마크다운 보고서를 생성합니다. 두 출력 모두 카테고리별(Sanitize / Wasteful / Risky / …)로 히트 수, 프로젝트 수, 행당 최대 3개의 예시 명령어를 표시합니다. + +`--json`을 사용하면 기계가 읽을 수 있는 형식으로 출력됩니다: + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## 예시 + +```bash +# 이 머신의 모든 CLI에서 전체 스캔 +failproofai audit + +# 최근 30일, Claude만 +failproofai audit --cli claude --since 30d + +# 상위 히트에 대한 예시 표시 +failproofai audit --show-examples --limit 10 + +# 특정 정책 상세 분석 +failproofai audit --policy protect-env-vars --policy block-force-push + +# 기계 읽기 가능한 출력 +failproofai audit --json > audit.json +``` + +## 참고 사항 + +- **캐시.** 트랜스크립트별 결과는 `(mtime, size, engineVersion, detectorVersion)`을 키로 하여 `~/.failproofai/cache/audit/.json`에 캐시됩니다. 정책 또는 감지기 코드가 변경되면 캐시가 자동으로 무효화됩니다. +- **변경 없음.** 감사는 읽기 전용 모드로 재실행됩니다. `warn-repeated-tool-calls`는 세션별 사이드카가 수정될 수 있으므로 건너뜁니다. +- **워크플로우 정책 제외.** `require-*-before-stop` 정책은 `Stop` 이벤트와 현재 git 상태에 대한 `execSync`에서만 동작합니다 — 이 정책들은 "2025년에 무슨 일이 있었을까"라는 해석이 의미가 없으므로 감사 집계에 나타나지 않습니다. +- **커스텀 정책 제외.** 사용자가 제공한 커스텀 훅은 재실행되지 않습니다 (원래 세션 이후 변경되었을 수 있음). \ No newline at end of file diff --git a/docs/pt-br/cli/audit.mdx b/docs/pt-br/cli/audit.mdx new file mode 100644 index 0000000..33fb7af --- /dev/null +++ b/docs/pt-br/cli/audit.mdx @@ -0,0 +1,100 @@ +--- +title: Auditar sessões anteriores (beta) +description: "Conte com que frequência o agente fez coisas desnecessárias ou arriscadas em transcrições anteriores" +--- + + + **Funcionalidade beta.** `failproofai audit` está sendo lançado em beta enquanto coletamos feedback inicial. Flags de CLI, formato de saída e o catálogo de detectores somente para auditoria podem mudar antes do próximo corte estável. Em breve disponível — abra uma issue se algo parecer errado. + + +```bash +failproofai audit [options] +``` + +Escaneia transcrições anteriores do agente CLI nesta máquina (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) e relata com que frequência o agente fez coisas que o failproofai foi criado para evitar — verificações de variáveis de ambiente, force pushes, prefixos redundantes `cd `, loops de sleep-polling, releitura de arquivos recém-editados, entre outros. + +Para cada transcrição, cada evento de uso de ferramenta é reproduzido pelas 39 políticas integradas **e** por 8 detectores somente para auditoria que identificam padrões ainda não cobertos pelas políticas em tempo de execução. As contagens são agregadas por política / detector em todas as sessões. + +## Opções + +| Flag | Descrição | +|------|-----------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | Restringe a um ou mais CLIs (separados por espaço ou repetidos). Padrão: todos os 7. | +| `--project ` | Restringe às sessões cujo `cwd` corresponde a este caminho. Repetível. | +| `--since 7d\|30d\|2026-04-01` | Apenas sessões cuja mtime da transcrição esteja dentro da janela. | +| `--policy ` | Restringe a um nome de política ou detector. Repetível. | +| `--limit N` | Top-N linhas na tabela (padrão 20). | +| `--show-examples` | Inclui um exemplo de comando por linha na tabela. | +| `--report ` | Caminho do relatório Markdown (padrão `./failproofai-audit.md`). | +| `--no-report` | Ignora a geração do relatório em markdown. | +| `--json` | Imprime JSON no stdout em vez da tabela. Implica `--no-report` a menos que `--report` também seja passado. | +| `--no-cache` | Ignora o cache de resultados por transcrição em `~/.failproofai/cache/audit/`. | + +## Detectores somente para auditoria + +Estes detectam padrões de "comportamento ineficiente" ainda não aplicados em tempo real. Eles são executados apenas durante o `audit` e nunca bloqueiam uma chamada de ferramenta ativa. + +| Detector | O que conta | +|---|---| +| `redundant-cd-cwd` | Comandos Bash que começam com `cd && …` mesmo que os comandos já sejam executados no `cwd`. | +| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` em um único arquivo fonte — use a ferramenta `Read`. | +| `prefer-edit-over-sed-awk` | Edições in-place com `sed -i` / `awk … > file` — use a ferramenta `Edit`. | +| `prefer-write-over-heredoc` | Heredoc / `echo > file` multilinha para gravar arquivos — use a ferramenta `Write`. | +| `sleep-polling-loop` | `sleep N` longo (≥ 30s) ou loops de polling `while …; sleep …; done`. | +| `find-from-root` | `find /`, `find /home`, `find /usr`, etc. — restrinja ao `cwd`. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, ignorando hooks. | +| `reread-after-edit` | `Read` de um arquivo que foi recém modificado com `Edit`/`Write` na mesma sessão. | + +## Saída + +A saída padrão é uma tabela ANSI no stdout mais um relatório markdown estruturado em `./failproofai-audit.md`. Ambos agrupam ocorrências por categoria (Sanitize / Wasteful / Risky / …) com contagens de ocorrências, contagens de projetos e até três exemplos de comandos por linha. + +`--json` emite saída legível por máquina: + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## Exemplos + +```bash +# Escanear tudo em todos os CLIs desta máquina +failproofai audit + +# Apenas os últimos 30 dias, somente Claude +failproofai audit --cli claude --since 30d + +# Mostrar exemplos para as principais ocorrências +failproofai audit --show-examples --limit 10 + +# Detalhar uma política específica +failproofai audit --policy protect-env-vars --policy block-force-push + +# Saída legível por máquina +failproofai audit --json > audit.json +``` + +## Observações + +- **Cache.** Os resultados por transcrição são armazenados em cache em `~/.failproofai/cache/audit/.json`, identificados por `(mtime, size, engineVersion, detectorVersion)`. O cache é invalidado automaticamente quando o código de política ou detector é alterado. +- **Sem mutação.** A auditoria é reproduzida em modo somente leitura. `warn-repeated-tool-calls` é ignorado porque, caso contrário, seu sidecar por sessão seria modificado. +- **Políticas de fluxo de trabalho ignoradas.** As políticas `require-*-before-stop` são acionadas apenas em eventos `Stop` e `execSync` contra o estado git ativo — elas não têm uma interpretação significativa de "o que teria acontecido em 2025", portanto não aparecem nas contagens de auditoria. +- **Políticas personalizadas ignoradas.** Hooks personalizados fornecidos pelo usuário não são reproduzidos (eles podem ter mudado desde a sessão original). \ No newline at end of file diff --git a/docs/ru/cli/audit.mdx b/docs/ru/cli/audit.mdx new file mode 100644 index 0000000..5702604 --- /dev/null +++ b/docs/ru/cli/audit.mdx @@ -0,0 +1,100 @@ +--- +title: Аудит прошлых сеансов (бета) +description: "Подсчитайте, как часто агент совершал нецелесообразные или рискованные действия в прошлых транскриптах" +--- + + + **Функция в бета-версии.** `failproofai audit` доступен в бета-версии, пока мы собираем первоначальные отзывы. Флаги CLI, формат вывода и каталог детекторов, предназначенных только для аудита, могут измениться перед следующим стабильным релизом. Скоро будет доступен в боевом режиме — пожалуйста, откройте issue, если что-нибудь выглядит неправильно. + + +```bash +failproofai audit [options] +``` + +Сканирует прошлые транскрипты CLI агента на этом компьютере (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) и сообщает, как часто агент совершал действия, которые failproofai предназначен останавливать — проверки переменных окружения, принудительные push-и, избыточные префиксы `cd `, циклы с задержками, повторное чтение недавно отредактированных файлов и многое другое. + +Для каждого транскрипта каждое событие tool-use воспроизводится через 39 встроенных политик **и** через 8 детекторов, предназначенных только для аудита, которые выявляют паттерны, не охваченные еще runtime-политиками. Подсчеты агрегируются по политикам / детекторам во всех сеансах. + +## Опции + +| Флаг | Описание | +|------|-------------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | Ограничить одним или несколькими CLI (через пробел или повторить). По умолчанию: все 7. | +| `--project ` | Ограничить сеансами, чьи `cwd` совпадают с этим путем. Повторяемо. | +| `--since 7d\|30d\|2026-04-01` | Только сеансы, чьи транскрипты mtime попадают в окно времени. | +| `--policy ` | Ограничить одной политикой или названием детектора. Повторяемо. | +| `--limit N` | Топ-N строк в таблице (по умолчанию 20). | +| `--show-examples` | Включить один пример команды в каждую строку таблицы. | +| `--report ` | Путь к отчету Markdown (по умолчанию `./failproofai-audit.md`). | +| `--no-report` | Пропустить создание отчета в формате Markdown. | +| `--json` | Вывести JSON в stdout вместо таблицы. Подразумевает `--no-report`, если `--report` также не передан. | +| `--no-cache` | Обойти кэш результатов по транскриптам в `~/.failproofai/cache/audit/`. | + +## Детекторы, предназначенные только для аудита + +Выявляют паттерны "глупого поведения", не (еще) применяемые в реальном времени. Запускаются только во время `audit` и никогда не блокируют live tool call. + +| Детектор | Что подсчитывает | +|---|---| +| `redundant-cd-cwd` | Bash-команды, начинающиеся с `cd && …`, хотя команды уже выполняются в `cwd`. | +| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` одного исходного файла — используйте инструмент `Read`. | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` встроенное редактирование — используйте инструмент `Edit`. | +| `prefer-write-over-heredoc` | Heredoc / многострочный `echo > file` для записи файлов — используйте инструмент `Write`. | +| `sleep-polling-loop` | Длинный `sleep N` (≥ 30s) или циклы `while …; sleep …; done` с опросом. | +| `find-from-root` | `find /`, `find /home`, `find /usr` и т. д. — ограничьте область `cwd`. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, пропуск хуков. | +| `reread-after-edit` | `Read` файла, который был только что `Edit`/`Write` в том же сеансе. | + +## Вывод + +По умолчанию выводится ANSI-таблица в stdout плюс отчет в формате Markdown с разделами в `./failproofai-audit.md`. Оба группируют совпадения по категориям (Sanitize / Wasteful / Risky / …) с подсчетами совпадений, количеством проектов и до трех примеров команд в строке. + +`--json` выводит машиночитаемый результат: + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## Примеры + +```bash +# Сканировать все на каждом CLI на этом компьютере +failproofai audit + +# Только за последние 30 дней, только Claude +failproofai audit --cli claude --since 30d + +# Показать примеры для топ-совпадений +failproofai audit --show-examples --limit 10 + +# Углубиться в одну политику +failproofai audit --policy protect-env-vars --policy block-force-push + +# Машиночитаемый вывод +failproofai audit --json > audit.json +``` + +## Примечания + +- **Кэш.** Результаты по транскриптам кэшируются в `~/.failproofai/cache/audit/.json` с ключом `(mtime, size, engineVersion, detectorVersion)`. Кэш автоматически инвалидируется при изменении кода политики или детектора. +- **Без изменений.** Аудит воспроизводится в режиме только для чтения. `warn-repeated-tool-calls` пропускается, потому что его боковой файл per-session иначе был бы изменен. +- **Политики рабочего процесса пропущены.** Политики `require-*-before-stop` срабатывают только на событиях `Stop` и `execSync` против live git state — они не имеют значимой интерпретации "что было бы, если бы произошло в 2025", поэтому они не отображаются в подсчетах аудита. +- **Пользовательские политики пропущены.** Пользовательские хуки не воспроизводятся (они могли измениться с момента исходного сеанса). \ No newline at end of file diff --git a/docs/tr/cli/audit.mdx b/docs/tr/cli/audit.mdx new file mode 100644 index 0000000..90443b4 --- /dev/null +++ b/docs/tr/cli/audit.mdx @@ -0,0 +1,100 @@ +--- +title: Geçmiş oturumları denetle (beta) +description: "Aracının geçmiş transkriptler arasında ne sıklıkla savurgan veya riskli işler yaptığını say" +--- + + + **Beta özelliği.** `failproofai audit` erken geri bildirim toplarken beta olarak yayınlanmaktadır. CLI bayrakları, çıktı biçimi ve yalnızca denetim dedektörü katalogu sonraki kararlı sürümden önce değişebilir. Yakında canlı yayına alınacak — bir sorun varsa lütfen sorun açın. + + +```bash +failproofai audit [options] +``` + +Bu makinedeki geçmiş aracı CLI transkriptlerini tarar (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) ve aracının failproofai'nin durdurmak üzere inşa edildiği şeyleri ne sıklıkla yaptığını raporlar — ortam değişkeni kontrolleri, zorla itişler, gereksiz `cd ` önekleri, uyku-yoklama döngüleri, yeni düzenlenmiş dosyaları yeniden okuma ve daha fazlası. + +Her transkript için, her araç-kullanım olayı 39 yerleşik politika **ve** çalışma zamanı politikaları tarafından henüz kapsanmayan desenleri yakalayan 8 yalnızca denetim dedektörü aracılığıyla yeniden oynatılır. Sayımlar, tüm oturumlar arasında politika / dedektör başına toplanır. + +## Seçenekler + +| Bayrak | Açıklama | +|------|-------------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | Bir veya daha fazla CLI ile sınırla (boşlukla ayrılmış veya tekrarlanmış). Varsayılan: tüm 7. | +| `--project ` | Oturumları `cwd` bu yolla eşleşenlerle sınırla. Tekrarlanabilir. | +| `--since 7d\|30d\|2026-04-01` | Yalnızca transkript mtime pencere içinde olan oturumlar. | +| `--policy ` | Bir politika veya dedektör adıyla sınırla. Tekrarlanabilir. | +| `--limit N` | Tablodaki ilk N satır (varsayılan 20). | +| `--show-examples` | Tablodaki her satır için bir örnek komut ekle. | +| `--report ` | Markdown rapor yolu (varsayılan `./failproofai-audit.md`). | +| `--no-report` | Markdown rapor yazma işlemini atla. | +| `--json` | Tabloyu günlüğe geçirmek yerine JSON'u stdout'a yazdır. `--report` da geçilmedikçe `--no-report` ima eder. | +| `--no-cache` | `~/.failproofai/cache/audit/` adresindeki transkript başına sonuç önbelleğini atla. | + +## Yalnızca denetim dedektörleri + +Gerçek zamanda (henüz) uygulanmayan "aptalca davranış" desenleri algılar. Bunlar yalnızca `audit` sırasında çalışır ve asla canlı bir araç çağrısını engelleme. + +| Dedektör | Neler sayıldığı | +|---|---| +| `redundant-cd-cwd` | `cd && …` ile başlayan Bash komutları, komutlar zaten `cwd` içinde çalışıyor olmasına rağmen. | +| `prefer-edit-over-read-cat` | Tek bir kaynak dosyasında `cat`/`head`/`tail`/`less`/`more` — `Read` aracını kullan. | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` yerinde düzenlemeler — `Edit` aracını kullan. | +| `prefer-write-over-heredoc` | Dosya yazma için Heredoc / çok satırlı `echo > file` — `Write` aracını kullan. | +| `sleep-polling-loop` | Uzun `sleep N` (≥ 30s) veya `while …; sleep …; done` yoklama döngüleri. | +| `find-from-root` | `find /`, `find /home`, `find /usr`, vb. — bunun yerine `cwd` kapsamını belirle. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, kancaları atlayarak. | +| `reread-after-edit` | Aynı oturumda yeni `Edit`/`Write` yapılmış bir dosyanın `Read` işlemi. | + +## Çıktı + +Varsayılan çıktı, stdout'a bir ANSI tablo artı `./failproofai-audit.md` adresinde bölümlere ayrılmış bir markdown rapordur. Her ikisi de vuruşları kategoriye göre gruplandırır (Sanitize / Wasteful / Risky / …) vuruş sayıları, proje sayıları ve satır başına üç örnek komuta kadar. + +`--json` makine tarafından okunabilir çıktı yayar: + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## Örnekler + +```bash +# Bu makinedeki her CLI'de her şeyi tara +failproofai audit + +# Yalnızca son 30 gün, yalnızca Claude +failproofai audit --cli claude --since 30d + +# En yüksek isabet için örnekleri göster +failproofai audit --show-examples --limit 10 + +# Bir politikaya dalallan +failproofai audit --policy protect-env-vars --policy block-force-push + +# Makine tarafından okunabilir çıktı +failproofai audit --json > audit.json +``` + +## Notlar + +- **Önbellek.** Transkript başına sonuçlar `~/.failproofai/cache/audit/.json` adresinde `(mtime, size, engineVersion, detectorVersion)` anahtarıyla önbelleğe alınır. Önbellek, politika veya dedektör kodu değiştiğinde otomatik olarak geçersiz kılınır. +- **Değişiklik yok.** Denetim salt okunur modda yeniden oynatılır. `warn-repeated-tool-calls` atlanır çünkü oturum başına yan sıra değiştirilir. +- **İş akışı politikaları atlanmış.** `require-*-before-stop` politikaları yalnızca `Stop` olaylarında ve canlı git durumuna karşı `execSync` üzerinde ateşlenir — "2025 yılında ne olurdu" yorumu anlamını taşımaz, bu nedenle denetim sayımlarında görünmezler. +- **Özel politikalar atlanmış.** Kullanıcı tarafından sağlanan özel kancalar yeniden oynatılmaz (orijinal oturumdan beri değişmiş olabilirler). \ No newline at end of file diff --git a/docs/vi/cli/audit.mdx b/docs/vi/cli/audit.mdx new file mode 100644 index 0000000..2857c55 --- /dev/null +++ b/docs/vi/cli/audit.mdx @@ -0,0 +1,100 @@ +--- +title: Kiểm tra các phiên trước đó (beta) +description: "Đếm tần suất agent thực hiện những việc lãng phí hoặc rủi ro trên các bảng ghi chép trong quá khứ" +--- + + + **Tính năng beta.** `failproofai audit` đang được phát hành dưới dạng beta trong khi chúng tôi thu thập phản hồi ban đầu. Các cờ CLI, định dạng đầu ra và danh mục detector chỉ dành cho audit có thể thay đổi trước bản ổn định tiếp theo. Sắp ra mắt — vui lòng mở một issue nếu có gì có vẻ không ổn. + + +```bash +failproofai audit [options] +``` + +Quét các bảng ghi chép CLI của agent trong quá khứ trên máy này (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) và báo cáo tần suất agent thực hiện những việc failproofai được xây dựng để ngăn chặn — kiểm tra biến môi trường, force push, tiền tố `cd ` dư thừa, vòng lặp sleep-polling, đọc lại tệp vừa chỉnh sửa, và hơn nữa. + +Đối với mỗi bảng ghi chép, mọi sự kiện tool-use được phát lại thông qua 39 chính sách tích hợp **và** thông qua 8 detector chỉ dành cho audit những mẫu chưa được bao gồm bởi chính sách runtime. Các lần đếm được tổng hợp theo chính sách / detector trên tất cả các phiên. + +## Tùy chọn + +| Cờ | Mô tả | +|------|-------------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | Hạn chế đến một hoặc nhiều CLI (cách nhau bằng dấu cách hoặc lặp lại). Mặc định: tất cả 7. | +| `--project ` | Hạn chế đến các phiên có `cwd` phù hợp với đường dẫn này. Có thể lặp lại. | +| `--since 7d\|30d\|2026-04-01` | Chỉ các phiên có mtime của bảng ghi chép nằm trong khoảng thời gian. | +| `--policy ` | Hạn chế đến một tên chính sách hoặc detector. Có thể lặp lại. | +| `--limit N` | Top-N hàng trong bảng (mặc định 20). | +| `--show-examples` | Bao gồm một lệnh ví dụ cho mỗi hàng trong bảng. | +| `--report ` | Đường dẫn báo cáo Markdown (mặc định `./failproofai-audit.md`). | +| `--no-report` | Bỏ qua việc viết báo cáo markdown. | +| `--json` | In JSON sang stdout thay vì bảng. Có nghĩa là `--no-report` trừ khi `--report` cũng được truyền. | +| `--no-cache` | Bỏ qua bộ đệm kết quả cho mỗi bảng ghi chép tại `~/.failproofai/cache/audit/`. | + +## Detector chỉ dành cho audit + +Những detector này phát hiện các mẫu hành vi "ngu ngốc" chưa (có thể) được thực thi trong thời gian thực. Chúng chỉ chạy trong `audit` và không bao giờ chặn một cuộc gọi công cụ trực tiếp. + +| Detector | Những gì nó đếm | +|---|---| +| `redundant-cd-cwd` | Lệnh Bash bắt đầu bằng `cd && …` mặc dù các lệnh đã chạy trong `cwd`. | +| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` trên một tệp nguồn duy nhất — sử dụng công cụ `Read`. | +| `prefer-edit-over-sed-awk` | Các chỉnh sửa tại chỗ `sed -i` / `awk … > file` — sử dụng công cụ `Edit`. | +| `prefer-write-over-heredoc` | Heredoc / `echo > file` trên nhiều dòng ghi tệp — sử dụng công cụ `Write`. | +| `sleep-polling-loop` | `sleep N` dài (≥ 30s) hoặc `while …; sleep …; done` các vòng lặp polling. | +| `find-from-root` | `find /`, `find /home`, `find /usr`, v.v. — phạm vi đến `cwd` thay thế. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, bỏ qua hook. | +| `reread-after-edit` | `Read` của một tệp vừa được `Edit`/`Write` trong cùng một phiên. | + +## Đầu ra + +Đầu ra mặc định là một bảng ANSI sang stdout cộng với một báo cáo markdown có phần tại `./failproofai-audit.md`. Cả hai nhóm đều lượt truy cập theo danh mục (Sanitize / Wasteful / Risky / …) với số lượng lượt truy cập, số lượng dự án và tối đa ba lệnh ví dụ cho mỗi hàng. + +`--json` phát hành đầu ra có thể đọc được bằng máy: + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## Ví dụ + +```bash +# Quét mọi thứ trên mọi CLI trên máy này +failproofai audit + +# Chỉ 30 ngày gần đây, Claude duy nhất +failproofai audit --cli claude --since 30d + +# Hiển thị ví dụ cho các lượt truy cập hàng đầu +failproofai audit --show-examples --limit 10 + +# Đi sâu vào một chính sách +failproofai audit --policy protect-env-vars --policy block-force-push + +# Đầu ra có thể đọc được bằng máy +failproofai audit --json > audit.json +``` + +## Ghi chú + +- **Bộ đệm.** Kết quả cho mỗi bảng ghi chép được lưu vào bộ đệm tại `~/.failproofai/cache/audit/.json` được khóa bằng `(mtime, size, engineVersion, detectorVersion)`. Bộ đệm sẽ tự động vô hiệu hóa khi mã chính sách hoặc detector thay đổi. +- **Không có sửa đổi.** Audit phát lại ở chế độ chỉ đọc. `warn-repeated-tool-calls` bị bỏ qua vì phần sidecar của nó theo phiên sẽ bị sửa đổi. +- **Chính sách quy trình bị bỏ qua.** Các chính sách `require-*-before-stop` chỉ kích hoạt trên các sự kiện `Stop` và `execSync` đối với trạng thái git trực tiếp — chúng không có sự giải thích có ý nghĩa "điều gì sẽ xảy ra vào năm 2025", vì vậy chúng không xuất hiện trong số đếm audit. +- **Chính sách tùy chỉnh bị bỏ qua.** Các hook tùy chỉnh do người dùng cung cấp không được phát lại (chúng có thể đã thay đổi kể từ phiên ban đầu). \ No newline at end of file diff --git a/docs/zh/cli/audit.mdx b/docs/zh/cli/audit.mdx new file mode 100644 index 0000000..66deba9 --- /dev/null +++ b/docs/zh/cli/audit.mdx @@ -0,0 +1,100 @@ +--- +title: 审计历史会话(测试版) +description: "统计代理在历史记录中执行浪费或高风险操作的频率" +--- + + + **测试版功能。** `failproofai audit` 目前作为测试版发布,以便收集早期反馈。在下一个稳定版本发布之前,CLI 标志、输出格式以及仅审计检测器目录可能会有所变化。即将上线——如有任何异常,请提交 issue。 + + +```bash +failproofai audit [options] +``` + +扫描本机上过去的代理 CLI 记录(Claude Code、Codex、Copilot、Cursor、OpenCode、Pi、Gemini),并报告代理执行了多少次 failproofai 旨在阻止的操作——包括环境变量检查、强制推送、多余的 `cd ` 前缀、sleep 轮询循环、重新读取刚编辑过的文件等。 + +对于每个记录,所有工具调用事件都会通过 39 条内置策略**以及** 8 个仅审计检测器进行重放,后者用于捕获运行时策略尚未覆盖的模式。计数按策略/检测器跨所有会话进行汇总。 + +## 选项 + +| 标志 | 描述 | +|------|-------------| +| `--cli claude\|codex\|copilot\|cursor\|opencode\|pi\|gemini` | 限定为一个或多个 CLI(空格分隔或重复使用)。默认:全部 7 个。 | +| `--project ` | 限定为 `cwd` 与此路径匹配的会话。可重复使用。 | +| `--since 7d\|30d\|2026-04-01` | 仅包含记录文件修改时间在指定时间窗口内的会话。 | +| `--policy ` | 限定为一个策略或检测器名称。可重复使用。 | +| `--limit N` | 表格中显示的前 N 行(默认 20)。 | +| `--show-examples` | 在表格每行中包含一个示例命令。 | +| `--report ` | Markdown 报告路径(默认 `./failproofai-audit.md`)。 | +| `--no-report` | 跳过写入 Markdown 报告。 | +| `--json` | 将 JSON 输出到 stdout 而非表格。除非同时传入 `--report`,否则隐含 `--no-report`。 | +| `--no-cache` | 绕过 `~/.failproofai/cache/audit/` 中的按记录结果缓存。 | + +## 仅审计检测器 + +这些检测器用于检测尚未在运行时强制执行的"低效行为"模式。它们仅在 `audit` 期间运行,永远不会阻断实时工具调用。 + +| 检测器 | 计数内容 | +|---|---| +| `redundant-cd-cwd` | 以 `cd && …` 开头的 Bash 命令,即使命令已在 `cwd` 中运行。 | +| `prefer-edit-over-read-cat` | 对单个源文件使用 `cat`/`head`/`tail`/`less`/`more`——应使用 `Read` 工具。 | +| `prefer-edit-over-sed-awk` | 使用 `sed -i` / `awk … > file` 进行原地编辑——应使用 `Edit` 工具。 | +| `prefer-write-over-heredoc` | 使用 heredoc / 多行 `echo > file` 写入文件——应使用 `Write` 工具。 | +| `sleep-polling-loop` | 长时间 `sleep N`(≥ 30 秒)或 `while …; sleep …; done` 轮询循环。 | +| `find-from-root` | `find /`、`find /home`、`find /usr` 等——应将范围限定为 `cwd`。 | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`,跳过钩子。 | +| `reread-after-edit` | 在同一会话中对刚通过 `Edit`/`Write` 修改过的文件执行 `Read`。 | + +## 输出 + +默认输出为 stdout 上的 ANSI 表格,以及位于 `./failproofai-audit.md` 的分节 Markdown 报告。两者均按类别(Sanitize / Wasteful / Risky / …)对命中项进行分组,包含命中次数、项目数量以及每行最多三个示例命令。 + +`--json` 输出机器可读格式: + +```json +{ + "version": 1, + "scannedAt": "2026-05-21T...", + "scope": { "cli": [...], "projects": "all", "since": null }, + "transcripts": { "scanned": 4187, "skipped": 0, "errors": 0, "durationMs": 12345 }, + "results": [ + { + "name": "failproofai/protect-env-vars", + "source": "builtin", + "category": "Environment", + "hits": 428, + "projects": 142, + "firstSeen": "...", + "lastSeen": "...", + "examples": [{ "sessionId": "...", "cwd": "...", "timestamp": "...", "example": "env" }] + } + ], + "totals": { "hits": 1398, "projectsWithHits": 392 } +} +``` + +## 示例 + +```bash +# 扫描本机所有 CLI 的全部内容 +failproofai audit + +# 仅扫描最近 30 天,仅限 Claude +failproofai audit --cli claude --since 30d + +# 为命中次数最多的结果显示示例 +failproofai audit --show-examples --limit 10 + +# 深入分析某条策略 +failproofai audit --policy protect-env-vars --policy block-force-push + +# 机器可读输出 +failproofai audit --json > audit.json +``` + +## 注意事项 + +- **缓存。** 按记录的结果缓存在 `~/.failproofai/cache/audit/.json`,以 `(mtime, size, engineVersion, detectorVersion)` 为键。当策略或检测器代码发生变化时,缓存会自动失效。 +- **不做任何修改。** 审计以只读模式重放。`warn-repeated-tool-calls` 会被跳过,因为其每会话附属文件否则将被修改。 +- **工作流策略跳过。** `require-*-before-stop` 策略仅在 `Stop` 事件时触发,并通过 `execSync` 对实时 git 状态进行检查——它们对于"2025 年会发生什么"没有有意义的解释,因此不会出现在审计计数中。 +- **自定义策略跳过。** 用户提供的自定义钩子不会被重放(它们可能自原始会话以来已发生变化)。 \ No newline at end of file