メインコンテンツへスキップ
Factoryのエンタープライズストーリーは、単一で予測可能な設定階層に基づいて構築されています。マシンごとのアドホックな設定ではなく、組織がポリシーを一度定義すれば、ラップトップ、CI、VM、エアギャップ環境全体で一貫して適用されます。 このページでは、階層の仕組みと、モデル、ツール、セーフティポリシー、テレメトリーを管理するための使用方法について説明します。

4つのレベル

設定は、4つのレベルで一貫した構造を持つ.factory/フォルダーで定義されます:
Org         → Central `.factory/` bundle (or config endpoint)
Folder      → <git-root>/.../subfolder/.factory/
Project     → <git-root>/.factory/
User        → ~/.factory/
.factory/フォルダーには以下を含めることができます:
  • settings.json – 一般設定(モデル、セーフティ、設定、テレメトリー)
  • mcp.json – MCPサーバー設定
  • droids/ – droid定義
  • commands/ – カスタムコマンド
  • hooks/ – フック定義
  • skills/ – スキル定義
同じスキーマがすべてのレベルに適用されます。変わるのは優先順位です。

設定JSONスキーマ

以下は、組織管理設定の完全なスキーマです。これらは、FactoryアプリのEnterprise Controlsページを通じて組織管理者によって設定されます。すべてのプロパティはオプションです — 設定する必要のないフィールドは省略してください。
sessionDefaultSettings
object
Session default preferences.
maxAutonomyLevel
string
Maximum autonomy level any user or project can set. One of off, low, medium, high.
cloudSessionSync
boolean
Whether sessions are synced to the cloud.
includeCoAuthoredByDroid
boolean
Include a Co-authored-by: Droid trailer in git commits.
enableDroidShield
boolean
Enable Droid Shield safety checks.
ideAutoConnect
boolean
Automatically connect to the IDE on session start.
commandAllowlist
string[]
Shell command patterns that are always allowed (accumulated across levels).
commandDenylist
string[]
Shell command patterns that are always denied (accumulated across levels).
customModels
object[]
Org-provisioned custom model definitions.
modelPolicy
object
Org-level model access control.
userModelPolicies
object
Per-user model overrides. Map of user ID to policy object.
enabledPlugins
object
Map of plugin name in plugin@marketplace format to true (enabled) or false (disabled). Plugins set to true are automatically installed on CLI startup once their marketplace is available.
extraKnownMarketplaces
object
Additional plugin marketplaces. Map of marketplace name to a source object. Marketplaces listed here are automatically cloned and registered on CLI startup.
strictKnownMarketplaces
object[]
Marketplace sources that are strictly enforced. Each entry is a source object directly (e.g. { "source": "github", "repo": "owner/repo" }), not wrapped in a source key like extraKnownMarketplaces values.

サポートされているモデルID

以下のモデル識別子はallowedModelIdsblockedModelIdsで使用できます:
プロバイダーモデルID
Anthropicclaude-sonnet-4-5-20250929, claude-sonnet-4-6, claude-opus-4-5-20251101, claude-opus-4-6, claude-opus-4-6-fast, claude-haiku-4-5-20251001
OpenAIgpt-5.1, gpt-5.1-codex, gpt-5.1-codex-max, gpt-5.2, gpt-5.2-codex, gpt-5.3-codex
Googlegemini-3-pro-preview, gemini-3-flash-preview, gemini-3.1-pro-preview
XAIgrok-code-fast-1
オープンソースglm-4.7, glm-5, kimi-k2.5, minimax-m2.5

拡張のみのセマンティクス

Factoryは、従来の「オーバーライド」動作の代わりに拡張のみのセマンティクスを使用します。
  • 上位レベル(組織、プロジェクト)は下位レベルでオーバーライドできません
  • 下位レベル(フォルダー、ユーザー)は、上位レベルで未設定のフィールドに対してのみ追加できます。
  • これにより、プロジェクトやユーザーがエクスペリエンスをカスタマイズしても、組織ポリシーは確実に保持されます。
データ型に応じて3つのマージモードがあります。

1. 単純な値 – 最初の値が優先

単純なスカラー値(文字列、数値、真偽値)の場合:
  • 値を設定した最初のレベルが「優先」されます。
  • 下位レベルはその値を変更または削除できません。
例:
  • sessionDefaultSettings.model
  • sessionDefaultSettings.autonomyMode
  • maxAutonomyLevel
これにより、組織の決定(どのモデルや自律レベルが許可されるかなど)が権威あるものとして確実に保たれます。

2. 配列 – 結合、削除不可

配列フィールドはレベル間で蓄積されます:
  • 組織のエントリは常に存在し、削除できません
  • プロジェクトとフォルダーレベルでエントリを追加できます。
  • ユーザーレベルでエントリを追加できますが、上位レベルのエントリを削除または弱体化することはできません。
例:
  • コマンド許可リスト拒否リスト
  • 有効なフックや機能のリスト
このパターンは「これらのコマンドは常に拒否される」や「これらのフックは常に有効」などのポリシーに理想的で、チームがリストを拡張することは可能です。

3. オブジェクト – キーはレベルごとにロック

オブジェクトフィールドの場合:
  • 上位レベルで定義されたキーはロックされ、下位レベルで内容を変更できません。
  • 下位レベルは新しいキーを追加できますが、既存のキーを変更または削除はできません。
例:
  • customModels – 組織がclaude-enterpriseを定義;プロジェクトはpayments-gptを追加可能、ユーザーはpersonal-experimentalを追加可能、ただし誰もclaude-enterpriseを変更・削除はできない
  • MCPサーバー定義 – 組織がどのサーバーが存在し、どのように接続するかを定義;プロジェクトがどれを使用するかを決定
これにより、重要な設定(モデルエンドポイントやMCPサーバーなど)が中央制御下に保たれます。

組織設定

大規模組織は通常、組織レベルの.factoryバンドルまたは設定エンドポイントを管理し、以下を行います:
  • 許可されたモデル、ゲートウェイ、BYOKポリシーの指定
  • グローバルコマンド許可/拒否リストの定義
  • 自律性、推論努力、Droid Shieldなどのセーフティ機能のデフォルト設定
  • OTELデフォルト(エンドポイント、サンプリング、属性)の設定
  • 組織標準のdroid、コマンド、フックの公開
このバンドルは、Droidが動作するすべての環境—開発者マシン、CI、VM、エアギャップクラスター—に配布されます。 組織ポリシーは基盤であり、プロジェクトとユーザーはその上に構築します。

プロジェクトとフォルダー設定

プロジェクトとフォルダーは、特定のコードベースとチーム向けに組織ポリシーを専門化するために、バージョン管理にチェックインされた.factory/ディレクトリを使用します。 一般的な責任には以下が含まれます:
  • 許可されたセット内でプロジェクト固有のモデルとゲートウェイを追加
  • プロジェクト固有のdroid定義(例:/migrate-service/refactor-module
  • プロジェクトのテスト、リンター、デプロイメントプロセスを理解するフックの設定
  • 高リスクリポジトリ向けのセーフティ制御の強化
フォルダーレベルの.factory/ディレクトリは、異なるサブシステムが異なるポリシーを持つモノレポで有用です。

ユーザー設定

開発者は、上位レベルが未設定の場合に限り、個人設定のみのために~/.factory/を設定できます。 例:
  • 許可されたセットから好みのモデルを選択
  • 表示オプションと軽微なUX設定のデフォルト動作設定
  • 組織ポリシーと競合しない追加フックやツールの有効化
拡張のみのセマンティクスにより、ユーザーは以下ができません:
  • 組織またはプロジェクト設定で許可されていないモデルやツールの再有効化
  • コマンド許可/拒否リストの緩和
  • 組織またはプロジェクトによって設定された自律性やセーフティ要件の軽減

例:モデルポリシーの強制

組織が以下を望む場合を想定します:
  • 承認されたエンタープライズモデルのみを許可
  • ユーザー提供のAPIキーを禁止
  • すべてのプロンプトを特定のLLMゲートウェイ経由で強制
以下を行います:
  1. 組織の.factory/settings.jsonで許可されたモデルとゲートウェイエンドポイントを定義
  2. ユーザーBYOKを完全に無効にするポリシーフラグを設定
  3. モデル選択やエンドポイント使用が組織承認セットと一致することを確認するフックを設定
プロジェクトとユーザーは、さまざまなタスクに対して承認されたモデルのどれを使用するかを選択できますが、これらの保証を破ることはできません。

例:環境固有の自律性

組織が以下を望む場合を考えてみます:
  • CIとサンドボックス化されたコンテナで高い自律性を許可
  • 開発者ラップトップでは自律性を制限
以下が可能です:
  1. 組織レベルでmaxAutonomyLevelhighに設定
  2. プロジェクト設定で、以下を行う環境認識フックを定義:
    • 環境タグを検査(例:environment.type=local|ci|sandbox
    • ラップトップで実行時にmediumを超える自律性レベルをダウングレードまたはブロック
  3. 特に機密なリポジトリに対して、オプションでより厳しいフォルダーレベルポリシーを定義
ここでも、ユーザーはこれらのルールをオーバーライドできず、許可された範囲内でのみより安全な個人デフォルトを選択できます。

例:完全な組織管理設定

{
  "sessionDefaultSettings": {
    "model": "claude-opus-4-6",
    "reasoningEffort": "high",
    "interactionMode": "auto",
    "autonomyMode": "auto-medium",
    "specModeModel": "claude-sonnet-4-6",
    "specModeReasoningEffort": "medium"
  },
  "maxAutonomyLevel": "high",
  "cloudSessionSync": true,
  "includeCoAuthoredByDroid": true,
  "enableDroidShield": true,
  "ideAutoConnect": true,
  "commandAllowlist": ["npm *", "yarn *", "pnpm *", "make *"],
  "commandDenylist": ["rm -rf /", "sudo *"],
  "customModels": [
    {
      "model": "my-internal-model",
      "id": "custom:my-internal-model-v1",
      "index": 0,
      "baseUrl": "https://llm-gateway.internal.example.com/v1",
      "apiKey": "${INTERNAL_MODEL_API_KEY}",
      "provider": "generic-chat-completion-api",
      "displayName": "Internal Model v1",
      "maxContextLimit": 128000,
      "enableThinking": true,
      "thinkingMaxTokens": 8192,
      "maxOutputTokens": 16384,
      "extraHeaders": {
        "X-Team": "platform"
      },
      "extraArgs": {},
      "noImageSupport": false
    }
  ],
  "modelPolicy": {
    "allowedModelIds": ["claude-opus-4-6", "claude-sonnet-4-6", "gpt-5.3-codex"],
    "blockedModelIds": [],
    "allowCustomModels": true,
    "allowedBaseUrls": ["https://llm-gateway.internal.example.com/v1"],
    "allowAllFactoryModels": false
  },
  "userModelPolicies": {
    "user-abc-123": {
      "allowedModelIds": ["claude-opus-4-6"],
      "blockedModelIds": []
    }
  },
  "enabledPlugins": {
    "my-org-plugin@internal-marketplace": true,
    "experimental-plugin@internal-marketplace": false
  },
  "extraKnownMarketplaces": {
    "internal-marketplace": {
      "source": {
        "source": "github",
        "repo": "my-org/factory-plugins"
      }
    }
  },
  "strictKnownMarketplaces": [
    {
      "source": "github",
      "repo": "my-org/factory-plugins"
    }
  ]
}

すべてをまとめる

階層設定システムは、他のエンタープライズページで説明されているすべての基盤となります: 適切なレベルで一度ポリシーを表現することで、クラウド、ハイブリッド、エアギャップ環境全体でマシンごとのドリフトや一回限りの設定なしにDroidを実行できます。