Ana içeriğe atla
Yaygın senaryolar için kullanıma hazır örnekler. Her biri kurulumun nasıl yapılacağını ve nelerin beklenebileceğini gösterir.

Claude Code için hook’ları ayarlama

Failproof AI, Claude Code ile hook’lar sistemi aracılığıyla entegre olur. failproofai policies --install komutunu çalıştırdığınızda, Claude Code’un settings.json dosyasında her araç çağrısında tetiklenen hook komutlarını kaydeder.
1

failproofai'yi yükleyin

npm install -g failproofai
2

Tüm yerleşik politikaları etkinleştirin

failproofai policies --install
3

Hook'ların kaydedilip kaydedilmediğini doğrulayın

cat ~/.claude/settings.json | grep failproofai
PreToolUse, PostToolUse, Notification ve Stop olayları için hook girdilerini görmelisiniz.
4

Claude Code'u çalıştırın

claude
Politikalar şimdi her araç çağrısında otomatik olarak çalışır. Claude’dan sudo rm -rf / komutunu çalıştırmasını istemesi deneyin - engellenir.

Agents SDK için hook’ları ayarlama

Agents SDK ile inşa ediyorsanız, aynı hook sistemini programlı olarak kullanabilirsiniz.
1

failproofai'yi projenize yükleyin

npm install failproofai
2

Aracınızda hook'ları yapılandırın

Aracı işlemi oluştururken hook komutlarını geçin. Hook’lar Claude Code’da olduğu gibi aynı şekilde çalışır - stdin/stdout JSON aracılığıyla:
failproofai --hook PreToolUse   # her araçtan önce çağrılır
failproofai --hook PostToolUse  # her araçtan sonra çağrılır
3

Aracınız için özel bir politika yazın

import { customPolicies, allow, deny } from "failproofai";

customPolicies.add({
  name: "limit-to-project-dir",
  description: "Keep the agent inside the project directory",
  match: { events: ["PreToolUse"] },
  fn: async (ctx) => {
    const path = String(ctx.toolInput?.file_path ?? "");
    if (path.startsWith("/") && !path.startsWith(ctx.session?.cwd ?? "")) {
      return deny("Agent is restricted to the project directory");
    }
    return allow();
  },
});
4

Özel politikayı yükleyin

failproofai policies --install --custom ./my-agent-policies.js

Yıkıcı komutları engelleme

En yaygın kurulum - ajanların geri döndürülemez hasar vermesini önleyin.
failproofai policies --install block-sudo block-rm-rf block-force-push block-curl-pipe-sh
Bunu yapar:
  • block-sudo - tüm sudo komutlarını engeller
  • block-rm-rf - özyinelemeli dosya silmeyi engeller
  • block-force-push - git push --force’u engeller
  • block-curl-pipe-sh - uzak komut dosyalarını shell’e yönlendirmeyi engeller

Gizli bilgi sızıntısını önleme

Ajanların araç çıktısında kimlik bilgilerini görmesini veya sızıtmasını durdurun.
failproofai policies --install sanitize-api-keys sanitize-jwt sanitize-connection-strings sanitize-bearer-tokens
Bunlar PostToolUse’de çalışırlar - bir araç çalıştıktan sonra, ajan görmeden önce çıktıyı temizlerler.

Ajanlar dikkat gerektirdiğinde Slack uyarısı alın

Bildirim hook’unu kullanarak boşta olma uyarılarını Slack’e iletin.
import { customPolicies, allow, instruct } from "failproofai";

customPolicies.add({
  name: "slack-on-idle",
  description: "Alert Slack when the agent is waiting for input",
  match: { events: ["Notification"] },
  fn: async (ctx) => {
    const webhookUrl = process.env.SLACK_WEBHOOK_URL;
    if (!webhookUrl) return allow();

    const message = String(ctx.payload?.message ?? "Agent is waiting");
    const project = ctx.session?.cwd ?? "unknown";

    try {
      await fetch(webhookUrl, {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({
          text: `*${message}*\nProject: \`${project}\``,
        }),
        signal: AbortSignal.timeout(5000),
      });
    } catch {
      // never block the agent if Slack is unreachable
    }

    return allow();
  },
});
Yükleyin:
SLACK_WEBHOOK_URL=https://hooks.slack.com/... failproofai policies --install --custom ./slack-alerts.js

Ajanları bir dalda tutun

Ajanların dalları değiştirmesini veya korumalı dallara gönderimde bulunmasını önleyin.
import { customPolicies, allow, deny } from "failproofai";

customPolicies.add({
  name: "stay-on-branch",
  description: "Prevent the agent from checking out other branches",
  match: { events: ["PreToolUse"] },
  fn: async (ctx) => {
    if (ctx.toolName !== "Bash") return allow();
    const cmd = String(ctx.toolInput?.command ?? "");
    if (/git\s+checkout\s+(?!-b)/.test(cmd)) {
      return deny("Stay on the current branch. Create a new branch with -b if needed.");
    }
    return allow();
  },
});

Commit’ten önce testler gerekli kıl

Ajanları commit’lemeden önce testleri çalıştırmaya hatırlatın.
import { customPolicies, allow, instruct } from "failproofai";

customPolicies.add({
  name: "test-before-commit",
  description: "Remind the agent to run tests before committing",
  match: { events: ["PreToolUse"] },
  fn: async (ctx) => {
    if (ctx.toolName !== "Bash") return allow();
    const cmd = String(ctx.toolInput?.command ?? "");
    if (/git\s+commit/.test(cmd)) {
      return instruct("Run tests before committing. Use `npm test` or `bun test` first.");
    }
    return allow();
  },
});

Üretim deposunu kilitle

Takımınızdaki her geliştirici aynı politikaları alması için proje düzeyinde bir yapılandırma commit’leyin. Deponuzda .failproofai/policies-config.json dosyasını oluşturun:
{
  "enabledPolicies": [
    "block-sudo",
    "block-rm-rf",
    "block-force-push",
    "block-push-master",
    "block-env-files",
    "sanitize-api-keys",
    "sanitize-jwt"
  ],
  "policyParams": {
    "block-push-master": {
      "protectedBranches": ["main", "release", "production"]
    }
  }
}
Sonra commit’leyin:
git add .failproofai/policies-config.json
git commit -m "Add failproofai team policies"
failproofai yüklenmiş olan her takım üyesi bu kuralları otomatik olarak alır.

Daha fazla örnek

Depo içindeki examples/ dizini şunları içerir:
DosyaNeyi gösterir
policies-basic.jsBaşlangıç politikaları - üretim yazısını, force-push’u, yönlendirilen komut dosyalarını engelle
policies-notification.jsBoşta bildirimler ve oturum sonu için Slack uyarıları
policies-advanced/index.jsGeçişli içe aktarmalar, asenkron hook’lar, PostToolUse çıktı temizleme, Stop olayı işleme