Skip to content

完全設定リファレンス

ClawdbotはオプションのJSON5設定ファイル(コメントと末尾のカンマをサポート)を読み込みます:~/.clawdbot/clawdbot.json

設定ファイルが見つからない場合、Clawdbotは安全なデフォルト値(組み込みPiエージェント + 送信者別セッション + ワークスペース~/clawd)を使用します。通常、設定は以下を行うためにのみ必要です:

  • 誰がボットをトリガーできるかを制限する(channels.whatsapp.allowFromchannels.telegram.allowFromなど)
  • グループホワイトリスト + メンション動作を制御する(channels.whatsapp.groupschannels.telegram.groupschannels.discord.guilds
  • メッセージプレフィックスをカスタマイズする(messages
  • エージェントのプロキシーワークスペースを設定する(agents.defaults.workspaceまたはagents.list[].workspace
  • 組み込みエージェントのデフォルト(agents.defaults)とセッション動作(session)を調整する
  • 各エージェントのアイデンティティを設定する(agents.list[].identity

初心者向け?

初めて設定する場合は、先にクイックスタート設定ウィザードチュートリアルを読むことをお勧めします。

設定検証メカニズム

Clawdbotはスキーマに完全に一致する設定のみを受け入れます。不明なキー、型エラー、無効な値により、Gatewayは起動を拒否して安全性を確保します。

検証が失敗した場合:

  • Gatewayは起動しません
  • 診断コマンドのみ許可されます(例:clawdbot doctorclawdbot logsclawdbot healthclawdbot statusclawdbot serviceclawdbot help
  • clawdbot doctorを実行して正確な問題を確認します
  • clawdbot doctor --fix(または--yes)を実行してマイグレーション/修正を適用します

警告

Doctorは--fix/--yesを明示的に選択しない限り、変更を書き込みません。

設定ファイル構造

Clawdbot設定ファイルは、以下の主要な設定セクションを含む階層オブジェクトです:

json5
{
  // コア設定
  meta: {},
  env: {},
  wizard: {},
  diagnostics: {},
  logging: {},
  update: {},
  
  // 機能設定
  browser: {},
  ui: {},
  auth: {},
  models: {},
  nodeHost: {},
  agents: {},
  tools: {},
  bindings: {},
  broadcast: {},
  audio: {},
  media: {},
  messages: {},
  commands: {},
  approvals: {},
  session: {},
  cron: {},
  hooks: {},
  web: {},
  channels: {},
  discovery: {},
  canvasHost: {},
  talk: {},
  gateway: {},
  skills: {},
  plugins: {}
}

コア設定

meta

設定ファイルのメタデータ(CLIウィザードによって自動的に書き込まれます)。

json5
{
  meta: {
    lastTouchedVersion: "2026.1.24",
    lastTouchedAt: "2026-01-27T00:00:00.000Z"
  }
}
フィールドタイプ必須デフォルト説明
lastTouchedVersionstring-この設定を最後に変更したClawdbotのバージョン
lastTouchedAtstring-この設定を最後に変更した時刻(ISO 8601)

env

環境変数設定とシェル環境のインポート。

json5
{
  env: {
    shellEnv: {
      enabled: true,
      timeoutMs: 15000
    },
    vars: {
      OPENAI_API_KEY: "sk-...",
      ANTHROPIC_API_KEY: "sk-ant-..."
    },
    // 任意のキー値ペア
    CUSTOM_VAR: "value"
  }
}
フィールドタイプ必須デフォルト説明
shellEnv.enabledbooleanfalseログインシェルから環境変数をインポートするか(欠落しているキーのみインポート)
shellEnv.timeoutMsnumber15000シェル環境インポートのタイムアウト(ミリ秒)
varsobject-インライン環境変数(キー値ペア)

注意varsはプロセス環境変数に対応するキーが欠落している場合にのみ適用されます。既存の環境変数は決して上書きされません。

環境変数の優先順位

プロセス環境変数 > .envファイル > ~/.clawdbot/.env > 設定ファイル内のenv.vars

wizard

CLIウィザード(onboardconfiguredoctor)によって書き込まれるメタデータ。

json5
{
  wizard: {
    lastRunAt: "2026-01-01T00:00:00.000Z",
    lastRunVersion: "2026.1.4",
    lastRunCommit: "abc1234",
    lastRunCommand: "configure",
    lastRunMode: "local"
  }
}
フィールドタイプ必須デフォルト説明
lastRunAtstring-ウィザードを最後に実行した時刻
lastRunVersionstring-ウィザードを最後に実行した時のClawdbotのバージョン
lastRunCommitstring-ウィザードを最後に実行した時のGitコミットハッシュ
lastRunCommandstring-最後に実行したウィザードコマンド
lastRunModestring-ウィザードの実行モード(local | remote

diagnostics

診断テレメトリとOpenTelemetry設定。

json5
{
  diagnostics: {
    enabled: true,
    flags: ["debug-mode", "verbose-tool-calls"],
    otel: {
      enabled: false,
      endpoint: "https://otel.example.com",
      protocol: "http/protobuf",
      headers: {
        "X-Custom-Header": "value"
      },
      serviceName: "clawdbot",
      traces: true,
      metrics: true,
      logs: false,
      sampleRate: 0.1,
      flushIntervalMs: 5000
    },
    cacheTrace: {
      enabled: false,
      filePath: "/tmp/clawdbot/trace-cache.json",
      includeMessages: true,
      includePrompt: true,
      includeSystem: false
    }
  }
}
フィールドタイプ必須デフォルト説明
enabledbooleanfalse診断機能を有効にする
flagsstring[]-診断フラグのリスト
otel.enabledbooleanfalseOpenTelemetryテレメトリを有効にする
otel.endpointstring-OTELコレクターエンドポイント
otel.protocolstring-OTELプロトコル(http/protobuf | grpc
otel.headersobject-OTELリクエストヘッダー
otel.serviceNamestring-OTELサービス名
otel.tracesboolean-トレースデータを収集
otel.metricsboolean-メトリックデータを収集
otel.logsboolean-ログデータを収集
otel.sampleRatenumber-サンプリングレート(0-1)
otel.flushIntervalMsnumber-フラッシュ間隔(ミリ秒)
cacheTrace.enabledbooleanfalseトレースキャッシュを有効にする
cacheTrace.filePathstring-トレースキャッシュファイルパス
cacheTrace.includeMessagesboolean-キャッシュにメッセージを含める
cacheTrace.includePromptboolean-キャッシュにプロンプトを含める
cacheTrace.includeSystemboolean-キャッシュにシステムプロンプトを含める

logging

ログ設定。

json5
{
  logging: {
    level: "info",
    file: "/tmp/clawdbot/clawdbot.log",
    consoleLevel: "info",
    consoleStyle: "pretty",
    redactSensitive: "tools",
    redactPatterns: [
      "\\bTOKEN\\b\\s*[=:]\\s*([\"']?)([^\\s\"']+)\\1",
      "/\\bsk-[A-Za-z0-9_-]{8,}\\b/gi"
    ]
  }
}
フィールドタイプ必須デフォルト説明
levelstringinfoログレベル(silent | fatal | error | warn | info | debug | trace
filestring-ログファイルパス(デフォルト:/tmp/clawdbot/clawdbot-YYYY-MM-DD.log
consoleLevelstringinfoコンソールログレベル(levelオプションと同じ)
consoleStylestringprettyコンソール出力スタイル(pretty | compact | json
redactSensitivestringtools機密情報の秘匿モード(off | tools
redactPatternsstring[]-カスタム秘匿正規表現パターン(デフォルトを上書き)

ログファイルパス

安定したログファイルパスが必要な場合、logging.file/tmp/clawdbot/clawdbot.logに設定してください(デフォルトの日次ローテーションパスではなく)。

update

更新チャネルと自動チェック設定。

json5
{
  update: {
    channel: "stable",
    checkOnStart: true
  }
}
フィールドタイプ必須デフォルト説明
channelstringstable更新チャネル(stable | beta | dev
checkOnStartboolean-起動時に更新をチェック

browser

ブラウザ自動化設定(Playwrightベース)。

json5
{
  browser: {
    enabled: true,
    controlUrl: "ws://localhost:9222",
    controlToken: "secret-token",
    cdpUrl: "http://localhost:9222",
    remoteCdpTimeoutMs: 10000,
    remoteCdpHandshakeTimeoutMs: 5000,
    color: "#3b82f6",
    executablePath: "/usr/bin/google-chrome",
    headless: true,
    noSandbox: false,
    attachOnly: false,
    defaultProfile: "default",
    snapshotDefaults: {
      mode: "efficient"
    },
    profiles: {
      "profile-1": {
        cdpPort: 9222,
        cdpUrl: "http://localhost:9222",
        driver: "clawd",
        color: "#ff0000"
      }
    }
  }
}
フィールドタイプ必須デフォルト説明
enabledboolean-ブラウザツールを有効にする
controlUrlstring-ブラウザ制御WebSocket URL
controlTokenstring-ブラウザ制御認証トークン
cdpUrlstring-Chrome DevTools Protocol URL
remoteCdpTimeoutMsnumber-リモートCDPタイムアウト(ミリ秒)
remoteCdpHandshakeTimeoutMsnumber-リモートCDPハンドシェイクタイムアウト(ミリ秒)
colorstring-UIに表示される16進数カラー
executablePathstring-ブラウザ実行可能ファイルパス
headlessboolean-ヘッドレスモード
noSandboxboolean-サンドボックスを無効化(Linuxで必要)
attachOnlyboolean-既存のブラウザインスタンスにのみアタッチ
defaultProfilestring-デフォルトプロファイルID
snapshotDefaults.modestring-スナップショットモード(efficient
profilesobject-プロファイルマッピング(キー:プロファイル名、値:設定)

プロファイル設定

  • cdpPort:CDPポート(1-65535)
  • cdpUrl:CDP URL
  • driver:ドライバタイプ(clawd | extension
  • color:プロファイルの16進数カラー

ブラウザプロファイル命名

プロファイル名は小文字、数字、ハイフンのみを含める必要があります:^[a-z0-9-]+$

ui

UIカスタマイズ設定(Control UI、WebChat)。

json5
{
  ui: {
    seamColor: "#3b82f6",
    assistant: {
      name: "Clawdbot",
      avatar: "avatars/clawdbot.png"
    }
  }
}
フィールドタイプ必須デフォルト説明
seamColorstring-Seamカラーの16進数値
assistant.namestring-アシスタント表示名(最大50文字)
assistant.avatarstring-アシスタントアバターパスまたはURL(最大200文字)

アバーターサポート

  • ワークスペース相対パス(エージェントワークスペース内にある必要があります)
  • http(s) URL
  • data: URI

認証設定

auth

認証プロファイルメタデータ(キーは保存せず、プロファイルをプロバイダーとモードにのみマッピング)。

json5
{
  auth: {
    profiles: {
      "anthropic:me@example.com": {
        provider: "anthropic",
        mode: "oauth",
        email: "me@example.com"
      },
      "anthropic:work": {
        provider: "anthropic",
        mode: "api_key"
      },
      "openai:default": {
        provider: "openai",
        mode: "api_key"
      }
    },
    order: {
      anthropic: ["anthropic:me@example.com", "anthropic:work"],
      openai: ["openai:default"]
    },
    cooldowns: {
      billingBackoffHours: 24,
      billingBackoffHoursByProvider: {
        anthropic: 48
      },
      billingMaxHours: 168,
      failureWindowHours: 1
    }
  }
}
フィールドタイプ必須デフォルト説明
profilesobject-プロファイルマッピング(キー:プロファイルID、値:設定)
profiles.<profileId>.providerstring-プロバイダー名
profiles.<profileId>.modestring-認証モード(api_key | oauth | token
profiles.<profileId>.emailstring-OAuthメール(オプション)
orderobject-プロバイダーフェイルオーバー順序
cooldowns.billingBackoffHoursnumber-課金問題バックオフ期間(時間)
cooldowns.billingBackoffHoursByProviderobject-各プロバイダーの課金バックオフ期間
cooldowns.billingMaxHoursnumber-最大課金バックオフ期間(時間)
cooldowns.failureWindowHoursnumber-失敗ウィンドウ期間(時間)

Claude Code CLI自動同期

ClawdbotはOAuthトークンをClaude Code CLIからauth-profiles.jsonに自動的に同期します(Gatewayホスト上に存在する場合):

  • macOS:Keychainアイテム"Claude Code-credentials"(launchdプロンプトを回避するには「常に許可」を選択)
  • Linux/Windows:~/.claude/.credentials.json

認証ストレージ場所

  • <agentDir>/auth-profiles.json(デフォルト:~/.clawdbot/agents/<agentId>/agent/auth-profiles.json
  • レガシーインポート:~/.clawdbot/credentials/oauth.json

組み込みエージェントランタイムキャッシュ

  • <agentDir>/auth.json(自動管理; 手動編集しないでください)

モデル設定

models

AIモデルプロバイダーと設定。

json5
{
  models: {
    mode: "merge",
    providers: {
      "openai": {
        baseUrl: "https://api.openai.com/v1",
        apiKey: "${OPENAI_API_KEY}",
        auth: "api_key",
        api: "openai-completions",
        headers: {
          "X-Custom-Header": "value"
        },
        models: [
          {
            id: "gpt-4",
            name: "GPT-4",
            api: "openai-completions",
            reasoning: false,
            input: ["text"],
            cost: {
              input: 0.000005,
              output: 0.000015,
              cacheRead: 0.000001,
              cacheWrite: 0.000005
            },
            contextWindow: 128000,
            maxTokens: 4096,
            compat: {
              supportsStore: true,
              supportsDeveloperRole: true,
              supportsReasoningEffort: true,
              maxTokensField: "max_tokens"
            }
          }
        ]
      },
      "anthropic": {
        apiKey: "${ANTHROPIC_API_KEY}",
        auth: "oauth",
        api: "anthropic-messages",
        models: [
          {
            id: "claude-opus-4-5",
            name: "Claude Opus 4.5",
            api: "anthropic-messages",
            reasoning: true,
            input: ["text", "image"],
            contextWindow: 200000,
            maxTokens: 8192
          }
        ]
      },
      "ollama": {
        baseUrl: "http://localhost:11434",
        apiKey: "ollama"
      },
      "vercel-gateway": {
        apiKey: "${VERCEL_GATEWAY_API_KEY}"
      }
    },
    bedrockDiscovery: {
      enabled: false,
      region: "us-east-1",
      providerFilter: ["anthropic"],
      refreshInterval: 3600000,
      defaultContextWindow: 200000,
      defaultMaxTokens: 4096
    }
  }
}
フィールドタイプ必須デフォルト説明
modestring-モデルマージモード(merge | replace
providersobject-プロバイダーマッピング(キー:プロバイダーID、値:プロバイダー設定)
providers.<providerId>.baseUrlstring-APIベースURL
providers.<providerId>.apiKeystring-APIキー(環境変数置換をサポート)
providers.<providerId>.authstring-認証タイプ(api_key | aws-sdk | oauth | token
providers.<providerId>.apistring-APIタイプ(openai-completions | openai-responses | anthropic-messages | google-generative-ai | github-copilot | bedrock-converse-stream
providers.<providerId>.authHeaderboolean-認証ヘッダーを使用するか
providers.<providerId>.headersobject-カスタムHTTPヘッダー
providers.<providerId>.modelsarray-モデル定義のリスト
bedrockDiscovery.enabledbooleanfalseAWS Bedrockモデルディスカバリーを有効にする
bedrockDiscovery.regionstring-AWSリージョン
bedrockDiscovery.providerFilterstring[]-Bedrockプロバイダーフィルター
bedrockDiscovery.refreshIntervalnumber-リフレッシュ間隔(ミリ秒)
bedrockDiscovery.defaultContextWindownumber-デフォルトコンテキストウィンドウ
bedrockDiscovery.defaultMaxTokensnumber-デフォルト最大トークン数

モデル定義フィールド

  • id:モデルID(必須)
  • name:モデル表示名(必須)
  • api:APIタイプ
  • reasoning:推論モデルかどうか
  • input:サポートされる入力タイプ(text | image
  • cost.input:入力コスト
  • cost.output:出力コスト
  • cost.cacheRead:キャッシュ読み取りコスト
  • cost.cacheWrite:キャッシュ書き込みコスト
  • contextWindow:コンテキストウィンドウサイズ
  • maxTokens:最大トークン数
  • compat:互換性フラグ

エージェント設定

agents

エージェントリストとデフォルト設定。

json5
{
  agents: {
    defaults: {
      workspace: "~/clawd",
      repoRoot: "~/Projects/clawdbot",
      skipBootstrap: false,
      bootstrapMaxChars: 20000,
      userTimezone: "America/Chicago",
      timeFormat: "auto",
      model: {
        primary: "anthropic/claude-opus-4-5",
        fallbacks: [
          "openai/gpt-4",
          "vercel-gateway/gpt-4"
        ]
      },
      identity: {
        name: "Clawdbot",
        theme: "helpful sloth",
        emoji: "🦞",
        avatar: "avatars/clawdbot.png"
      },
      groupChat: {
        mentionPatterns: ["@clawd", "clawdbot"]
      },
      sandbox: {
        mode: "off",
        scope: "session",
        workspaceAccess: "rw",
        workspaceRoot: "/tmp/clawdbot-sandbox",
        docker: {
          image: "clawdbot/agent:latest",
          network: "bridge",
          env: {
            "CUSTOM_VAR": "value"
          },
          setupCommand: "npm install",
          limits: {
            memory: "512m",
            cpu: "0.5"
          }
        },
        browser: {
          enabled: true
        },
        prune: {
          enabled: true,
          keepLastN: 3
        }
      },
      subagents: {
        allowAgents: ["*"]
      },
      tools: {
        profile: "full-access",
        allow: ["read", "write", "edit", "browser"],
        deny: ["exec"]
      },
      concurrency: {
        maxConcurrentSessions: 5,
        maxConcurrentToolCalls: 10
      },
      cli: {
        backend: {
          command: "clawdbot agent",
          args: ["--thinking", "high"],
          output: "json",
          resumeOutput: "json",
          input: "stdin",
          maxPromptArgChars: 10000,
          env: {},
          clearEnv: ["NODE_ENV"],
          modelArg: "--model",
          modelAliases: {
            "opus": "anthropic/claude-opus-4-5"
          },
          sessionArg: "--session",
          sessionArgs: ["--verbose"],
          resumeArgs: [],
          sessionMode: "existing",
          sessionIdFields: ["agent", "channel", "accountId", "peer"],
          systemPromptArg: "--system-prompt",
          systemPromptMode: "append",
          systemPromptWhen: "always",
          imageArg: "--image",
          imageMode: "repeat",
          serialize: false
        }
      }
    },
    list: [
      {
        id: "main",
        default: true,
        name: "Main Assistant",
        workspace: "~/clawd-main",
        agentDir: "~/.clawdbot/agents/main/agent",
        model: "anthropic/claude-opus-4-5",
        identity: {
          name: "Samantha",
          theme: "helpful sloth",
          emoji: "🦥",
          avatar: "avatars/samantha.png"
        },
        groupChat: {
          mentionPatterns: ["@samantha", "sam", "assistant"]
        },
        sandbox: {
          mode: "non-main"
        },
        subagents: {
          allowAgents: ["research", "writer"]
        },
        tools: {
          allow: ["read", "write", "browser"],
          deny: []
        }
      },
      {
        id: "work",
        workspace: "~/clawd-work",
        model: {
          primary: "openai/gpt-4",
          fallbacks: []
        }
      }
    ]
  }
}

デフォルト設定agents.defaults):

フィールドタイプ必須デフォルト説明
workspacestring~/clawdエージェントワークスペースディレクトリ
repoRootstring-Gitリポジトリルートディレクトリ(システムプロンプト用)
skipBootstrapbooleanfalseワークスペースブートストラップファイル作成をスキップ
bootstrapMaxCharsnumber20000各ブートストラップファイルの最大文字数
userTimezonestring-ユーザータイムゾーン(システムプロンプトコンテキスト)
timeFormatstringauto時間フォーマット(auto | 12 | 24
model.primarystring-プライマリモデル(文字列形式:provider/model
model.fallbacksstring[]-フェイルオーバーモデルリスト
identity.namestring-エージェント名
identity.themestring-エージェントテーマ
identity.emojistring-エージェント絵文字
identity.avatarstring-エージェントアバターパスまたはURL
groupChat.mentionPatternsstring[]-グループメンションパターン(正規表現)
groupChat.historyLimitnumber-グループ履歴制限
sandbox.modestring-サンドボックスモード(off | non-main | all
sandbox.scopestring-サンドボックススコープ(session | agent | shared
sandbox.workspaceAccessstring-ワークスペースアクセス権限(none | ro | rw
sandbox.workspaceRootstring-カスタムサンドボックスワークスペースルートディレクトリ
subagents.allowAgentsstring[]-許可されたサブエージェントID(["*"] = すべて)
tools.profilestring-ツールプロファイル(allow/denyの前に適用)
tools.allowstring[]-許可されたツールリスト
tools.denystring[]-拒否されたツールリスト(denyが優先)
concurrency.maxConcurrentSessionsnumber-最大同時セッション数
concurrency.maxConcurrentToolCallsnumber-最大同時ツール呼び出し数

エージェントリストagents.list):

フィールドタイプ必須デフォルト説明
idstring必須エージェントID(安定した識別子)
defaultbooleanfalseデフォルトエージェントか(複数の場合最初のものが優先)
namestring-エージェント表示名
workspacestring~/clawd-<agentId>エージェントワークスペース(デフォルトを上書き)
agentDirstring~/.clawdbot/agents/<agentId>/agentエージェントディレクトリ
modelstring/object-各エージェントのモデル設定
identityobject-各エージェントのアイデンティティ設定
groupChatobject-各エージェントのグループチャット設定
sandboxobject-各エージェントのサンドボックス設定
subagentsobject-各エージェントのサブエージェント設定
toolsobject-各エージェントのツール制限

モデル設定形式

エージェントのmodelフィールドは2つの形式をとることができます:

  • 文字列形式"provider/model"primaryのみを上書き)
  • オブジェクト形式{ primary, fallbacks }primaryfallbacksを上書き;[]でそのエージェントのグローバルフェイルオーバーを無効化)

バインディング設定

bindings

着信メッセージを特定のエージェントにルーティングします。

json5
{
  bindings: [
    {
      agentId: "main",
      match: {
        channel: "whatsapp",
        accountId: "personal",
        peer: {
          kind: "dm",
          id: "+15555550123"
        },
        guildId: "123456789012345678",
        teamId: "T12345"
      }
    },
    {
      agentId: "work",
      match: {
        channel: "whatsapp",
        accountId: "biz"
      }
    },
    {
      agentId: "main",
      match: {
        channel: "telegram"
      }
    }
  ]
}
フィールドタイプ必須デフォルト説明
agentIdstring必須ターゲットエージェントID(agents.listになければなりません)
match.channelstring必須一致するチャネル
match.accountIdstring-一致するアカウントID(* = 任意のアカウント;省略 = デフォルトアカウント)
match.peerobject-一致するピア(対等者)
match.peer.kindstring-ピアタイプ(dm | group | channel
match.peer.idstring-ピアID
match.guildIdstring-DiscordサーバーID
match.teamIdstring-Slack/Microsoft TeamsチームID

決定論的マッチング順序

  1. match.peer(最も具体的)
  2. match.guildId
  3. match.teamId
  4. match.accountId(正確、ピア/guild/teamなし)
  5. match.accountId: "*"(チャネルスコープ、ピア/guild/teamなし)
  6. デフォルトエージェント(agents.list[].default、そうでなければ最初のリスト項目、そうでなければ"main"

各マッチングレイヤー内で、bindingsの最初の一致する項目が勝ちます。

ツール設定

tools

ツール実行とセキュリティポリシー。

json5
{
  tools: {
    exec: {
      elevated: {
        enabled: false,
        allowFrom: {
          whatsapp: ["+15555550123"],
          telegram: ["tg:123456789"]
        }
      }
    },
    browser: {
      enabled: true
    },
    agentToAgent: {
      enabled: false,
      allow: ["main", "work"]
    }
  }
}
フィールドタイプ必須デフォルト説明
exec.elevated.enabledbooleanfalse昇格bashを有効にする(! <cmd>
exec.elevated.allowFromobject-各チャネルの昇格allowlist
browser.enabledboolean-ブラウザツールを有効にする
agentToAgent.enabledboolean-エージェント間メッセージングを有効にする
agentToAgent.allowstring[]-許可されたエージェントIDのリスト

ブロードキャスト設定

broadcast

メッセージを複数のチャネル/エージェントに送信します。

json5
{
  broadcast: {
    strategy: "parallel",
    "+15555550123": ["main", "work"],
    "120363403215116621@g.us": ["transcribe"],
    "strategy": "sequential"
  }
}
フィールドタイプ必須デフォルト説明
strategystring-ブロードキャスト戦略(parallel | sequential
<peerId>string[]-これらのエージェントにメッセージを送信(動的キー)

ブロードキャストキー

  • キー形式:<peerId>(例:+15555550123または"120363403215116621@g.us"
  • 値:エージェントID配列
  • 特殊キー"strategy":並列とシーケンシャル実行を制御

オーディオ設定

audio

オーディオとトランスクリプション設定。

json5
{
  audio: {
    transcription: {
      enabled: true,
      provider: "whisper",
      model: "base"
    }
  }
}

フィールド詳細

完全なトランスクリプション設定フィールドについては、zod-schema.core.ts内のTranscribeAudioSchemaを参照してください。

メッセージ設定

messages

メッセージプレフィックス、確認、キュー動作。

json5
{
  messages: {
    responsePrefix: "🦞",
    ackReaction: "👀",
    ackReactionScope: "group-mentions",
    removeAckAfterReply: false,
    queue: {
      mode: "collect",
      debounceMs: 1000,
      cap: 20,
      drop: "summarize",
      byChannel: {
        whatsapp: "collect",
        telegram: "collect",
        discord: "collect",
        imessage: "collect",
        webchat: "collect"
      }
    },
    inbound: {
      debounceMs: 2000,
      byChannel: {
        whatsapp: 5000,
        slack: 1500,
        discord: 1500
      }
    },
    groupChat: {
      historyLimit: 50
    }
  }
}
フィールドタイプ必須デフォルト説明
responsePrefixstring-すべての送信レスポンスのプレフィックス(テンプレート変数をサポート)
ackReactionstring-着信メッセージを確認する絵文字
ackReactionScopestring-確認を送信するタイミング(group-mentions | group-all | direct | all
removeAckAfterReplybooleanfalseレスポンス後に確認を削除
queue.modestring-キューモード(steer | followup | collect | steer-backlog | queue | interrupt
queue.debounceMsnumber-キューデバウンス(ミリ秒)
queue.capnumber-キューキャップ
queue.dropstring-ドロップ戦略(old | new | summarize
queue.byChannelobject-各チャネルのキューモード
inbound.debounceMsnumber-着信メッセージデバウンス(ミリ秒;0で無効)
inbound.byChannelobject-各チャネルのデバウンス時間
groupChat.historyLimitnumber-グループ履歴コンテキスト制限(0で無効)

テンプレート変数responsePrefix用):

変数説明
{model}短いモデル名claude-opus-4-5gpt-4
{modelFull}完全なモデル識別子anthropic/claude-opus-4-5
{provider}プロバイダー名anthropicopenai
{thinkingLevel}現在の推論レベルhighlowoff
{identity.name}エージェントアイデンティティ名"auto"モードと同じ)

WhatsAppセルフチャット

セルフチャットレスポンスはデフォルトで[{identity.name}]を使用し、そうでなければ[clawdbot]を使用します。これにより、同じ番号の会話は可読性を保ちます。

コマンド設定

commands

チャットコマンド処理設定。

json5
{
  commands: {
    native: "auto",
    text: true,
    bash: false,
    bashForegroundMs: 2000,
    config: false,
    debug: false,
    restart: false,
    useAccessGroups: true
  }
}
フィールドタイプ必須デフォルト説明
nativestringautoネイティブコマンド(auto | true | false
textbooleantrueチャットメッセージのスラッシュコマンドを解析
bashbooleanfalse!を許可(/bashのエイリアス)
bashForegroundMsnumber2000bashフォアグラウンドウィンドウ(ミリ秒)
configbooleanfalse/configを許可(ディスクに書き込み)
debugbooleanfalse/debugを許可(ランタイムオーバーライドのみ)
restartbooleanfalse/restartとGateway再起動ツールを許可
useAccessGroupsbooleantrueコマンドのアクセスグループallowlist/ポリシーを強制

bashコマンド

commands.bash: trueはホストシェルコマンドを実行するために! <cmd>を有効にします(/bash <cmd>もエイリアスとして機能します)。tools.elevated.enabledとallowlist内の送信者が必要です。

セッション設定

session

セッション永続化と動作。

json5
{
  session: {
    activation: {
      defaultMode: "auto",
      defaultDurationMs: 900000,
      keepAlive: true
    },
    compaction: {
      auto: true,
      threshold: 0.8,
      strategy: "summary"
    }
  }
}
フィールドタイプ必須デフォルト説明
activation.defaultModestringautoデフォルトアクティベーションモード(auto | always | manual
activation.defaultDurationMsnumber-デフォルトアクティベーション期間(ミリ秒)
activation.keepAliveboolean-アクティブ状態を維持
compaction.autobooleantrue自動圧縮
compaction.thresholdnumber-圧縮しきい値(0-1)
compaction.strategystring-圧縮戦略

セッション圧縮

コンテキストオーバーフロー時に自動圧縮され、その後失敗します。CHANGELOG.md:122を参照してください。

Cron設定

cron

スケジュールされたタスク。

json5
{
  cron: {
    enabled: true,
    store: "~/.clawdbot/cron.json",
    maxConcurrentRuns: 5
  }
}
フィールドタイプ必須デフォルト説明
enabledboolean-Cronエンジンを有効にする
storestring-Cronストアファイルパス
maxConcurrentRunsnumber-最大同時実行数

Hooks設定

hooks

Webhookとイベント転送。

json5
{
  hooks: {
    enabled: true,
    path: "~/.clawdbot/hooks",
    token: "webhook-secret-token",
    maxBodyBytes: 1048576,
    presets: ["slack-alerts", "discord-notifications"],
    transformsDir: "~/.clawdbot/hook-transforms",
    mappings: [
      {
        pattern: "^agent:.*$",
        target: "https://hooks.example.com/agent-events",
        headers: {
          "Authorization": "Bearer ${WEBHOOK_AUTH}"
        }
      }
    ],
    gmail: {
      enabled: false,
      credentialsPath: "~/.clawdbot/gmail-credentials.json",
      subscriptionIds: ["subscription-1", "subscription-2"]
    },
    internal: {
      onMessage: "log-message",
      onToolCall: "log-tool-call",
      onError: "log-error"
    }
  }
}
フィールドタイプ必須デフォルト説明
enabledboolean-Hooksを有効にする
pathstring-Hooksディレクトリパス
tokenstring-Webhook認証トークン
maxBodyBytesnumber-最大リクエストボディサイズ(バイト)
presetsstring[]-プリセットHookリスト
transformsDirstring-Hook変換スクリプトディレクトリ
mappingsarray-カスタムHookマッピング
gmail.enabledboolean-Gmail Pub/Subを有効にする
gmail.credentialsPathstring-Gmail資格情報パス
gmail.subscriptionIdsstring[]-GmailサブスクリプションIDリスト
internal.onMessagestring-メッセージ内部Hook
internal.onToolCallstring-ツール呼び出し内部Hook
internal.onErrorstring-エラー内部Hook

チャネル設定

channels

マルチチャネルメッセージ統合設定。

json5
{
  channels: {
    whatsapp: {
      enabled: true,
      botToken: "123456:ABC...",
      dmPolicy: "pairing",
      allowFrom: ["+15555550123"],
      groups: {
        "*": { requireMention: true },
        "-1001234567890": {
          allowFrom: ["@admin"],
          systemPrompt: "Keep answers brief.",
          topics: {
            "99": {
              requireMention: false,
              skills: ["search"],
              systemPrompt: "Stay on topic."
            }
          }
        }
      },
      sendReadReceipts: true,
      textChunkLimit: 4000,
      chunkMode: "length",
      mediaMaxMb: 50,
      historyLimit: 50,
      replyToMode: "first",
      accounts: {
        default: {},
        personal: {},
        biz: {
          authDir: "~/.clawdbot/credentials/whatsapp/biz"
        }
      }
    },
    telegram: {
      enabled: true,
      botToken: "123456:ABC...",
      dmPolicy: "pairing",
      allowFrom: ["tg:123456789"],
      groups: {
        "*": { requireMention: true }
      },
      customCommands: [
        { command: "backup", description: "Git backup" },
        { command: "generate", description: "Create an image" }
      ],
      historyLimit: 50,
      replyToMode: "first",
      linkPreview: true,
      streamMode: "partial",
      draftChunk: {
        minChars: 200,
        maxChars: 800,
        breakPreference: "paragraph"
      }
    },
    discord: {
      enabled: true,
      token: "your-bot-token",
      mediaMaxMb: 8,
      allowBots: false,
      actions: {
        reactions: true,
        messages: true,
        threads: true,
        pins: true
      },
      guilds: {
        "123456789012345678": {
          requireMention: false,
          users: ["987654321098765432"],
          channels: {
            general: { allow: true },
            help: {
              allow: true,
              requireMention: true,
              users: ["987654321098765432"]
            }
          }
        }
      },
      historyLimit: 20,
      dm: {
        enabled: true,
        policy: "pairing",
        allowFrom: ["1234567890", "username"],
        groupEnabled: false,
        groupChannels: ["clawd-dm"]
      }
    },
    slack: {
      enabled: true,
      botToken: "xoxb-...",
      appToken: "xapp-...",
      channels: {
        "#general": { allow: true, requireMention: true }
      },
      historyLimit: 50,
      allowBots: false,
      reactionNotifications: "own",
      slashCommand: {
        enabled: true,
        name: "clawd",
        sessionPrefix: "slack:slash",
        ephemeral: true
      }
    },
    signal: {
      reactionNotifications: "own",
      reactionAllowlist: ["+15551234567"],
      historyLimit: 50
    },
    imessage: {
      enabled: true,
      cliPath: "imsg",
      dbPath: "~/Library/Messages/chat.db",
      dmPolicy: "pairing",
      allowFrom: ["+15555550123"],
      historyLimit: 50,
      includeAttachments: false,
      mediaMaxMb: 16
    }
  }
}

チャネル固有のドキュメント

各チャネルには詳細な設定オプションがあります。以下を参照してください:

共通チャネルフィールド

  • enabled:チャネルを有効にする
  • dmPolicy:DMポリシー(pairing | allowlist | open | disabled
  • allowFrom:DM allowlist(pairingモードで未知の送信者はペアリングコードを受け取ります)
  • groupPolicy:グループポリシー(open | disabled | allowlist
  • historyLimit:履歴コンテキスト制限(0で無効)

Gateway設定

gateway

Gateway WebSocketサーバーと認証。

json5
{
  gateway: {
    port: 18789,
    mode: "local",
    bind: "loopback",
    controlUi: {
      enabled: true,
      basePath: "/",
      allowInsecureAuth: false,
      dangerouslyDisableDeviceAuth: false
    },
    auth: {
      mode: "token",
      token: "secret-gateway-token",
      password: "gateway-password",
      allowTailscale: false
    },
    trustedProxies: ["127.0.0.1", "10.0.0.0/8"],
    tailscale: {
      mode: "off",
      resetOnExit: false
    },
    remote: {
      url: "ws://gateway.example.com:18789",
      transport: "ssh",
      token: "remote-token",
      password: "remote-password",
      tlsFingerprint: "SHA256:...",
      sshTarget: "user@gateway-host",
      sshIdentity: "~/.ssh/id_ed25519"
    },
    reload: {
      mode: "hot",
      debounceMs: 1000
    },
    tls: {
      enabled: false,
      autoGenerate: true,
      certPath: "/path/to/cert.pem",
      keyPath: "/path/to/key.pem",
      caPath: "/path/to/ca.pem"
    },
    http: {
      endpoints: {
        chatCompletions: {
          enabled: true
        },
        responses: {
          enabled: true,
          maxBodyBytes: 10485760,
          files: {
            allowUrl: true,
            allowedMimes: ["text/*", "application/pdf"],
            maxBytes: 10485760,
            maxChars: 100000,
            maxRedirects: 10,
            timeoutMs: 30000,
            pdf: {
              maxPages: 50,
              maxPixels: 67108864,
              minTextChars: 0
            }
          },
          images: {
            allowUrl: true,
            allowedMimes: ["image/*"],
            maxBytes: 10485760,
            maxRedirects: 5,
            timeoutMs: 30000
          }
        }
      }
    },
    nodes: {
      browser: {
        mode: "auto",
        node: "macos-1"
      },
      allowCommands: [],
      denyCommands: ["rm -rf", ":(){ :|:& };:"]
    }
  }
}
フィールドタイプ必須デフォルト説明
portnumber18789Gateway WebSocketポート
modestringlocalGatewayモード(local | remote
bindstring-バインドアドレス(auto | lan | loopback | custom | tailnet
controlUi.enabledboolean-コントロールUIを有効にする
controlUi.basePathstring-UIベースパス
controlUi.allowInsecureAuthboolean-安全でない認証を許可
auth.modestring-認証モード(token | password
auth.tokenstring-認証トークン
auth.passwordstring-認証パスワード
auth.allowTailscaleboolean-Tailscale認証を許可
tailscale.modestringoffTailscaleモード(off | serve | funnel
tailscale.resetOnExitboolean-終了時にServe/Funnelをリセット
remote.urlstring-リモートGateway URL
remote.transportstring-リモート転送(ssh | direct
remote.tokenstring-リモートトークン
remote.passwordstring-リモートパスワード
remote.tlsFingerprintstring-リモートTLSフィンガープリント
remote.sshTargetstring-SSHターゲット
remote.sshIdentitystring-SSH IDファイルパス
reload.modestring-リロードモード(off | restart | hot | hybrid
reload.debounceMsnumber-リロードデバウンス(ミリ秒)
tls.enabledboolean-TLSを有効にする
tls.autoGenerateboolean-証明書を自動生成
nodes.browser.modestring-ブラウザノードモード(auto | manual | off
nodes.allowCommandsstring[]-許可されたノードコマンド
nodes.denyCommandsstring[]-拒否されたノードコマンド

Tailscaleバインディング制限

Serve/Funnelが有効な場合、gateway.bindloopbackのままである必要があります(Clawdbotはこのルールを強制します)。

スキル設定

skills

スキルプラットフォームとインストール。

json5
{
  skills: {
    allowBundled: ["bird", "sherpa-onnx-tts"],
    load: {
      extraDirs: ["~/custom-skills"],
      watch: true,
      watchDebounceMs: 500
    },
    install: {
      preferBrew: false,
      nodeManager: "pnpm"
    },
    entries: {
      "search": {
        enabled: true,
        apiKey: "${SEARCH_API_KEY}",
        env: {
          "SEARCH_ENGINE": "google"
        },
        config: {
          "maxResults": 10
        }
      }
    }
  }
}
フィールドタイプ必須デフォルト説明
allowBundledstring[]-許可されたバンドルスキルのリスト
load.extraDirsstring[]-追加のスキルディレクトリ
load.watchboolean-スキルファイルの変更を監視
load.watchDebounceMsnumber-監視デバウンス(ミリ秒)
install.preferBrewboolean-Homebrewインストールを優先
install.nodeManagerstring-ノードマネージャー(npm | pnpm | yarn | bun
entries.<skillId>.enabledboolean-スキルを有効にする
entries.<skillId>.apiKeystring-スキルAPIキー
entries.<skillId>.envobject-スキル環境変数
entries.<skillId>.configobject-スキル設定

プラグイン設定

plugins

プラグインシステム設定。

json5
{
  plugins: {
    enabled: true,
    allow: ["whatsapp", "telegram", "discord"],
    deny: [],
    load: {
      paths: ["~/.clawdbot/plugins", "./custom-plugins"]
    },
    slots: {
      memory: "custom-memory-provider"
    }
  }
}
フィールドタイプ必須デフォルト説明
enabledboolean-プラグインシステムを有効にする
allowstring[]-許可されたプラグインのリスト
denystring[]-拒否されたプラグインのリスト
load.pathsstring[]-プラグインロードパス
slots.memorystring-カスタムメモリプロバイダー

設定Includes($include

$includeディレクティブを使用して設定を複数のファイルに分割します。

json5
// ~/.clawdbot/clawdbot.json
{
  gateway: { port: 18789 },
  
  // 単一ファイルを含める(含まれるキーの値を置換)
  agents: { "$include": "./agents.json5" },
  
  // 複数のファイルを含める(順番に深くマージ)
  broadcast: { 
    "$include": [
      "./clients/mueller.json5",
      "./clients/schmidt.json5"
    ]
  }
}
json5
// ~/.clawdbot/agents.json5
{
  defaults: { sandbox: { mode: "all", scope: "session" } },
  list: [
    { id: "main", workspace: "~/clawd" }
  ]
}

マージ動作

  • 単一ファイル$includeを含むオブジェクトを置換
  • ファイル配列:順番にファイルを深くマージ(後のファイルが前のファイルを上書き)
  • 兄弟キー:含めた後に兄弟キーをマージ(含まれた値を上書き)
  • 兄弟キー + 配列/基本型:サポートされません(含まれる内容はオブジェクトである必要があります)

パス解決

  • 相対パス:含むファイルに対して相対的に解決
  • 絶対パス:そのまま使用
  • 親ディレクトリ../参照は期待通りに動作

ネストされたインクルード: 含まれるファイル自体が$includeディレクティブを含めることができます(最大10レベルの深さまで)。

環境変数置換

任意の設定文字列値で${VAR_NAME}構文を使用して環境変数を直接参照できます。変数は設定のロード時に置換され、検証の前に置換されます。

json5
{
  models: {
    providers: {
      "vercel-gateway": {
        apiKey: "${VERCEL_GATEWAY_API_KEY}"
      }
    }
  },
  gateway: {
    auth: {
      token: "${CLAWDBOT_GATEWAY_TOKEN}"
    }
  }
}

ルール

  • 大文字の環境変数名のみに一致:[A-Z_][A-Z0-9_]*
  • 欠落または空の環境変数は設定のロード時にエラーをスローします
  • $${VAR}を使用してエスケープし、リテラル${VAR}を出力します
  • $includeに適用されます(含まれるファイルも置換を取得します)

欠落した変数

欠落または空の環境変数は設定のロード時にエラーをスローします。

設定検証と診断

設定の検証が失敗した場合、clawdbot doctorを実行して正確な問題を確認します。

bash
## 設定を診断
clawdbot doctor

## 問題を自動修正(手動確認が必要)
clawdbot doctor --fix

## 自動修正(確認をスキップ)
clawdbot doctor --yes

診断機能

  • 不明な設定キーの検出
  • データ型の検証
  • 欠落した必須フィールドの検出
  • 設定マイグレーションの適用
  • 安全でないDMポリシーの検出
  • チャネル設定の検証

設定ファイルパス

ファイルパス説明
メイン設定~/.clawdbot/clawdbot.jsonメイン設定ファイル
環境変数~/.clawdbot/.envグローバル環境変数
ワークスペース環境~/clawd/.envワークスペース環境変数
認証プロファイル<agentDir>/auth-profiles.json認証プロファイル
ランタイムキャッシュ<agentDir>/auth.json組み込みエージェントランタイムキャッシュ
レガシーOAuth~/.clawdbot/credentials/oauth.jsonレガシーOAuthインポート
Cronストア~/.clawdbot/cron.jsonCronタスクストア
Hooksパス~/.clawdbot/hooksHooksディレクトリ

本レッスンのまとめ

このチュートリアルでは、Clawdbotの完全な設定システムについて詳しく説明しました:

  • ✅ 設定ファイル構造と検証メカニズム
  • ✅ すべてのコア設定セクション(認証、エージェント、チャネル、セッション、ツール、Cron、Hooksなど)
  • ✅ 環境変数置換と設定優先順位
  • ✅ 一般的な設定例とベストプラクティス
  • ✅ 設定ファイルパスとストレージ場所

次のレッスン

次のレッスンでは**Gateway WebSocket APIプロトコル**を学習します。

学習内容:

  • WebSocket接続ハンドシェイクと認証
  • メッセージフレーム形式(要求、応答、イベント)
  • コアメソッドリファレンスと呼び出し例
  • 権限システムとロール管理
  • エラー処理と再試行戦略

付録:ソースコード参照

クリックしてソースコードの場所を表示

更新日時:2026-01-27

設定セクションファイルパス行番号
メインSchemasrc/config/zod-schema.ts1-556
コアSchemasrc/config/zod-schema.core.ts1-300
エージェントSchemasrc/config/zod-schema.agents.ts1-54
チャネルSchemasrc/config/zod-schema.channels.ts1-11
セッションSchemasrc/config/zod-schema.session.ts-
ツールSchemasrc/config/zod-schema.agent-runtime.ts-
Hooks Schemasrc/config/zod-schema.hooks.ts-
プロバイダーSchemasrc/config/zod-schema.providers.ts-
設定ドキュメントdocs/gateway/configuration.md-

重要な定数

  • デフォルトポート:18789gateway.server-startup-log.ts
  • デフォルトワークスペース:~/clawd
  • デフォルトGatewayバインド:loopback(127.0.0.1)

重要な関数

  • ClawdbotSchema:メイン設定Schema定義
  • normalizeAllowFrom():allowlist値を正規化
  • requireOpenAllowFrom():オープンモードのallowlistを検証