> ## Documentation Index
> Fetch the complete documentation index at: https://factory-docs-auto-sync-jp-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 階層設定と組織管理

> 組織、プロジェクト、フォルダ、ユーザー設定がどのように連携してDroidのモデル、ツール、安全ポリシー、テレメトリを制御するか。

Factoryのエンタープライズストーリーは、**単一で予測可能な設定階層**の上に構築されています。マシンごとのアドホックな設定の代わりに、組織はポリシーを一度表現し、ラップトップ、CI、VM、エアギャップ環境全体で一貫して適用させることができます。

このページでは、階層がどのように機能するか、そしてモデル、ツール、安全ポリシー、テレメトリを統制するためにそれをどのように使用するかを説明します。

***

## 4つのレベル

設定は、4つのレベルで一貫した構造を持つ`.factory/`フォルダで定義されます：

```text theme={null}
Org         → Central `.factory/` bundle (or config endpoint)
Folder      → <git-root>/.../subfolder/.factory/
Project     → <git-root>/.factory/
User        → ~/.factory/
```

各 `.factory/` フォルダには以下が含まれます：

* `settings.json` – 一般設定（モデル、安全性、環境設定、テレメトリ）
* `hooks.json` – フック定義
* `mcp.json` – MCP サーバー設定
* `droids/` – droid 定義
* `commands/` – カスタムコマンド
* `skills/` – スキル定義

すべてのレベルで**同じスキーマ**が適用されます。変わるのは**優先度**です。

***

<a id="system-managed-settings-file" />

## システム管理 `settings.json` ファイル

ユーザーがサインインする**前に**組織ポリシーを適用する必要があるデプロイメント — 管理対象ラップトップ、Factory に認証されていない CI ランナー、エアギャップ環境または制限付きネットワークのインストール — では、IT / MDM 管理者は各マシンのハードコードされた既知のパスに `settings.json` を配置できます：

| OS          | パス                                                   |
| ----------- | ---------------------------------------------------- |
| macOS       | `/Library/Application Support/Factory/settings.json` |
| Linux と WSL | `/etc/factory/settings.json`                         |
| Windows     | `C:\Program Files\Factory\settings.json`             |

このファイルは、このページの他の部分と同じ [Settings JSON スキーマ](#settings-json-schema) を使用します。

このファイルが存在する場合、そのマシンでは**組織レベル設定の正式な情報源**となり、組織設定に対する API 取得や開発者モードの環境変数オーバーライドは行われません。`factoryTier` シグナルは引き続きベストエフォートで Factory API に問い合わせられ（失敗しても致命的ではありません）、管理対象デプロイメントでもエンタープライズ限定の動作が維持されます。

このファイルが存在しない、または読み取れない場合、Droid は既存の組織設定フロー（Factory App / managed-settings エンドポイント）にフォールバックします。ファイルが存在しても形式が不正、またはスキーマ検証に失敗した場合、組織設定は空のポリシーとして解決され、失敗はログに記録されます。つまり、壊れた管理者デプロイメントが**黙ってバイパスされることはありません**。

これは、MDM イメージやインストーラーとともにベースポリシーを配布する推奨方法であり、ユーザーがこれを上書きしたり弱めたりすることはできません。

***

<a id="settings-json-schema" />

## Settings JSON スキーマ

以下は組織管理設定の完全なスキーマです。これらは Factory App の [Enterprise Controls](https://app.factory.ai) ページで組織管理者によって設定されます。すべてのプロパティはオプションです。設定する必要のないフィールドは省略してください。

<ResponseField name="sessionDefaultSettings" type="object">
  セッションのデフォルト環境設定

  <Expandable title="properties">
    <ResponseField name="model" type="string">
      デフォルトモデル識別子（例：`claude-opus-4-6`、`gpt-5.3-codex`）
    </ResponseField>

    <ResponseField name="reasoningEffort" type="string">
      モデルが応答前にどれだけ思考するか。`none`、`dynamic`、`off`、`minimal`、`low`、`medium`、`high`、`xhigh`、`max` のいずれか
    </ResponseField>

    <ResponseField name="interactionMode" type="string">
      Droid インタラクションモード。`auto`、`spec`、`agi` のいずれか
    </ResponseField>

    <ResponseField name="autonomyMode" type="string">
      セッションの自律モード。`normal`、`spec`、`auto-low`、`auto-medium`、`auto-high` のいずれか
    </ResponseField>

    <ResponseField name="specModeModel" type="string">
      spec モードがアクティブな時に使用するモデル
    </ResponseField>

    <ResponseField name="specModeReasoningEffort" type="string">
      spec モード用の推論努力のオーバーライド。`reasoningEffort` と同じ値
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="maxAutonomyLevel" type="string">
  任意のユーザーまたはプロジェクトが設定できる最大自律レベル。`off`、`low`、`medium`、`high` のいずれか
</ResponseField>

<ResponseField name="cloudSessionSync" type="boolean">
  セッションがクラウドに同期されるかどうか
</ResponseField>

<ResponseField name="wikiCloudSync" type="boolean">
  AutoWiki コンテンツを Factory App に保存し、GitHub wiki に同期できるかどうか
</ResponseField>

<ResponseField name="includeCoAuthoredByDroid" type="boolean">
  git コミットに `Co-authored-by: Droid` トレーラーを含めるかどうか
</ResponseField>

<ResponseField name="enableDroidShield" type="boolean">
  Droid Shield 安全性チェックを有効にするかどうか
</ResponseField>

<ResponseField name="ideAutoConnect" type="boolean">
  セッション開始時に IDE に自動接続するかどうか
</ResponseField>

<ResponseField name="commandAllowlist" type="string[]">
  常に許可されるシェルコマンドパターン（レベル間で累積）
</ResponseField>

<ResponseField name="commandDenylist" type="string[]">
  常に確認が必要なシェルコマンドパターン（レベル間で累積）。denylistのコマンドでも、ユーザーが明示的に承認すれば実行できます。ハードブロックには`commandBlocklist`を使用してください。
</ResponseField>

<ResponseField name="commandBlocklist" type="string[]">
  絶対に実行されないシェルコマンドパターン（レベル間で累積）。拒否リストとは異なり、ブロックされたコマンドには承認の手段がありません。完全自律、自動実行、`--skip-permissions-unsafe`のいずれの場合でもブロックが適用されます。droidは照合前に実際に呼び出されるプログラムを解決するため、ラッパーシェル、絶対パス、クォートのトリック、コマンド置換で回避することはできません。組織が義務付けるハードストップに使用してください。
</ResponseField>

<ResponseField name="customModels" type="object[]">
  組織提供のカスタムモデル定義

  <Expandable title="properties">
    <ResponseField name="model" type="string" required>
      プロバイダー API に送信されるモデル名
    </ResponseField>

    <ResponseField name="id" type="string" required>
      このカスタムモデルエントリの一意識別子。`custom:` で始まる必要があります（例：`custom:my-internal-model-v1`）
    </ResponseField>

    <ResponseField name="index" type="integer" required>
      表示順序インデックス
    </ResponseField>

    <ResponseField name="baseUrl" type="string" required>
      モデル API エンドポイントのベース URL
    </ResponseField>

    <ResponseField name="apiKey" type="string" required>
      プロバイダーとの認証用 API キー
    </ResponseField>

    <ResponseField name="provider" type="string" required>
      プロバイダータイプ。`anthropic`、`openai`、`generic-chat-completion-api`、`factory`、`google`、`xai`、`voyage` のいずれか
    </ResponseField>

    <ResponseField name="displayName" type="string" required>
      モデル選択画面に表示される人間が読める名前
    </ResponseField>

    <ResponseField name="maxContextLimit" type="integer">
      トークン単位での最大コンテキストウィンドウサイズ
    </ResponseField>

    <ResponseField name="enableThinking" type="boolean">
      拡張思考 / 思考の連鎖を有効にするかどうか
    </ResponseField>

    <ResponseField name="thinkingMaxTokens" type="integer">
      思考フェーズの最大トークン数
    </ResponseField>

    <ResponseField name="maxOutputTokens" type="integer">
      最大出力トークン数
    </ResponseField>

    <ResponseField name="extraHeaders" type="object">
      各リクエストで送信する追加 HTTP ヘッダー。ヘッダー名と値のマップ
    </ResponseField>

    <ResponseField name="extraArgs" type="object">
      API に渡される追加のプロバイダー固有引数
    </ResponseField>

    <ResponseField name="noImageSupport" type="boolean" required>
      モデルが画像入力をサポートしない場合は `true` に設定
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="modelPolicy" type="object">
  組織レベルのモデルアクセス制御

  <Expandable title="properties">
    <ResponseField name="allowedModelIds" type="string[]">
      明示的に許可されるモデル ID。以下の [サポートされるモデル ID](#supported-model-ids) を参照
    </ResponseField>

    <ResponseField name="blockedModelIds" type="string[]">
      明示的にブロックされるモデル ID
    </ResponseField>

    <ResponseField name="allowCustomModels" type="boolean">
      ユーザーが独自のカスタムモデルを追加できるかどうか
    </ResponseField>

    <ResponseField name="allowedBaseUrls" type="string[]">
      カスタムモデルが接続を許可されるベース URL
    </ResponseField>

    <ResponseField name="allowAllFactoryModels" type="boolean">
      許可/ブロックリストに関係なく、すべての Factory ホストモデルを許可するかどうか
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="userModelPolicies" type="object">
  ユーザーごとのモデルオーバーライド。ユーザー ID からポリシーオブジェクトへのマップ

  <Expandable title="properties">
    <ResponseField name="allowedModelIds" type="string[]">
      このユーザーが使用を許可されるモデル ID
    </ResponseField>

    <ResponseField name="blockedModelIds" type="string[]">
      このユーザーが使用をブロックされるモデル ID
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="enabledPlugins" type="object">
  `plugin@marketplace` 形式のプラグイン名から `true`（有効）または `false`（無効）へのマップ。`true` に設定されたプラグインは、マーケットプレイスが利用可能になるとCLI起動時に自動的にインストールされます。
</ResponseField>

<ResponseField name="extraKnownMarketplaces" type="object">
  追加のプラグインマーケットプレイス。マーケットプレイス名からソースオブジェクトへのマップ。ここにリストされたマーケットプレイスは、CLI起動時に自動的にクローンされ、登録されます。

  <Expandable title="properties">
    <ResponseField name="source" type="object" required>
      マーケットプレイスソース — `source` フィールドで区別される以下の形式のいずれか：

      <Expandable title="github">
        <ResponseField name="source" type="string" required>
          `"github"` である必要があります。
        </ResponseField>

        <ResponseField name="repo" type="string" required>
          `owner/repo` 形式のGitHubリポジトリ。
        </ResponseField>

        <ResponseField name="ref" type="string">
          追跡するGitブランチまたはタグ（例：`"main"`、`"v1.2.0"`）
        </ResponseField>

        <ResponseField name="sha" type="string">
          オプションの40文字フルコミットSHA。設定すると、マーケットプレイスはこの正確なコミットに固定されます。
        </ResponseField>
      </Expandable>

      <Expandable title="url">
        <ResponseField name="source" type="string" required>
          `"url"` である必要があります。
        </ResponseField>

        <ResponseField name="url" type="string" required>
          マーケットプレイスのGitリポジトリURL（例：`https://gitlab.com/company/plugins.git`）
        </ResponseField>

        <ResponseField name="ref" type="string">
          追跡するオプションのGitブランチまたはタグ
        </ResponseField>

        <ResponseField name="sha" type="string">
          固定先となるオプションの40文字フルコミットSHA
        </ResponseField>
      </Expandable>

      <Expandable title="local">
        <ResponseField name="source" type="string" required>
          `"local"` である必要があります。
        </ResponseField>

        <ResponseField name="path" type="string" required>
          マーケットプレイスへのローカルファイルシステムパス。
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="strictKnownMarketplaces" type="object[]">
  厳格に強制されるマーケットプレイスソース。各エントリは、`extraKnownMarketplaces` の値のように `source` キーでラップされるのではなく、ソースオブジェクトを直接記述します（例：`{ "source": "github", "repo": "owner/repo" }`）。
</ResponseField>

<a id="supported-model-ids" />

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

以下のモデル識別子は `allowedModelIds` と `blockedModelIds` で使用できます：

| プロバイダー        | モデルID                                                                                                                                                                    |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Anthropic** | `claude-sonnet-4-5-20250929`, `claude-sonnet-4-6`, `claude-opus-4-5-20251101`, `claude-opus-4-6`, `claude-opus-4-6-fast`, `claude-opus-4-7`, `claude-haiku-4-5-20251001` |
| **OpenAI**    | `gpt-5.1`, `gpt-5.1-codex`, `gpt-5.1-codex-max`, `gpt-5.2`, `gpt-5.3-codex`                                                                                              |
| **Google**    | `gemini-3.5-flash`, `gemini-3-flash-preview`, `gemini-3.1-pro-preview`                                                                                                   |
| **XAI**       | `grok-code-fast-1`                                                                                                                                                       |
| **オープンソース**   | `glm-5`, `glm-5.1`, `kimi-k2.5`, `kimi-k2.6`, `minimax-m2.7`                                                                                                             |

***

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

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が動作するすべての環境（開発者マシン、CI、VM、エアギャップクラスター）に配布されます。

組織ポリシーが基盤であり、プロジェクトとユーザーはその上に構築します。

***

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

プロジェクトとフォルダーは、バージョン管理にチェックインされた `.factory/` ディレクトリを使用して、特定のコードベースやチームに対する組織ポリシーを専門化します。

一般的な責任は以下の通りです：

* 許可されたセット内でプロジェクト固有のモデルとゲートウェイを追加。
* プロジェクト固有のドロイド（例：`/migrate-service`、`/refactor-module`）を定義。
* プロジェクトのテスト、リンター、デプロイメントプロセスを認識するフックを設定。
* 高リスクリポジトリの安全制御を強化。

フォルダーレベルの `.factory/` ディレクトリは、異なるサブシステムが異なるポリシーを持つモノレポで有用です。

***

## ユーザー設定

開発者は、上位レベルが設定されていない場合の**個人設定のみ**に対して `~/.factory/` を設定できます。

例：

* 許可されたセットから好みのモデルを選択。

* 表示オプションとマイナーなUX設定のデフォルト動作を設定。

* 組織ポリシーと競合しない追加のフックやツールを有効化。
  拡張専用のセマンティクスのため、ユーザーは以下のことができません：

* 組織またはプロジェクト設定で禁止されたモデルやツールを再度有効にする。

* コマンドの許可/拒否リストを緩める。

* 組織またはプロジェクトで設定された自律性や安全要件を軽減する。

***

## 例：モデルポリシーの強制

あなたの組織が以下を求めているとします：

* 承認されたエンタープライズモデルのみを許可する。
* ユーザー提供のAPIキーを禁止する。
* すべてのプロンプトを特定のLLMゲートウェイ経由で強制する。

この場合、以下を行います：

1. 組織の`.factory/settings.json`で許可されたモデルとゲートウェイエンドポイントを定義する。
2. ユーザーBYOKを完全に無効にするためのポリシーフラグを設定する。
3. モデル選択やエンドポイント使用が組織承認済みセットと一致することを検証するフックを構成する。

プロジェクトとユーザーは異なるタスクで**承認されたモデルのうちどれを**使用するかを選択できますが、これらの保証を破ることはできません。

***

## 例：環境固有の自律性

以下を求める組織を考えてみましょう：

* CIおよびサンドボックスコンテナで高い自律性を許可する。
* 開発者のラップトップで自律性を制限する。

以下のようにできます：

1. 組織レベルで`maxAutonomyLevel`を`high`に設定する。
2. プロジェクト設定で、以下を行う環境対応フックを定義する：
   * 環境タグを検査する（例：`environment.type=local|ci|sandbox`）。
   * ラップトップで実行時に`medium`を超える自律性レベルをダウングレードまたはブロックする。
3. 特に機密性の高いリポジトリについては、オプションでより厳しいフォルダレベルのポリシーを定義する。

繰り返しますが、ユーザーはこれらのルールを上書きできません。許可された範囲内でより安全な個人デフォルトを選択することのみ可能です。

***

## 例：完全な組織管理設定

```json theme={null}
{
  "sessionDefaultSettings": {
    "model": "claude-sonnet-4-6",
    "reasoningEffort": "high",
    "interactionMode": "auto",
    "autonomyMode": "auto-medium",
    "specModeModel": "claude-opus-4-6",
    "specModeReasoningEffort": "medium"
  },
  "maxAutonomyLevel": "high",
  "cloudSessionSync": true,
  "includeCoAuthoredByDroid": true,
  "enableDroidShield": true,
  "ideAutoConnect": true,
  "commandAllowlist": ["npm *", "yarn *", "pnpm *", "make *"],
  "commandDenylist": ["rm -rf /", "sudo *"],
  "commandBlocklist": ["shutdown", "mkfs", "curl"],
  "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"
    }
  ]
}
```

***

## 機能別のエンタープライズ制御

一般的な階層に加えて、いくつかの機能には下位レベルをすべて上書きする専用の組織レベル切り替えがあります：

* **AutoWiki Cloud Sync** (`wikiCloudSync`) – AutoWiki コンテンツを Factory App に生成・保存できるかどうかを制御します。無効にすると、すべての wiki API エンドポイントがブロックされ、CLI は Factory App への保存と GitHub wiki 同期をスキップします。デフォルトで有効です。詳しくは [AutoWiki](/jp/cli/features/wiki/overview#autowiki-cloud-sync) を参照してください。
* **Cloud Session Sync** (`cloudSessionSync`) – セッションデータを Factory cloud に同期するかどうかを制御します。

これらの制御は、[app.factory.ai](https://app.factory.ai) の **Enterprise Controls** セクションで組織管理者が管理します。

***

## すべてをまとめる

階層設定システムは、他のエンタープライズページで説明されているすべての基盤となります：

* [アイデンティティ・アクセス管理](/jp/enterprise/identity-and-access) – 誰がどのレベルの設定を変更できるか。
* [プライバシー、データフロー・ガバナンス](/jp/enterprise/privacy-and-data-flows) – データとテレメトリがどこに送信を許可されるか。
* [ネットワーク・デプロイメント設定](/jp/enterprise/network-and-deployment) – Droidが実行できる環境とその接続方法。
* [LLM安全性・エージェント制御](/jp/enterprise/llm-safety-and-agent-controls) – コマンド、ツール、Droid Shieldのポリシー。
* [モデル、LLMゲートウェイ・統合](/jp/enterprise/models-llm-gateways-and-integrations) – モデル、ゲートウェイ、MCPサーバー、ドロイド、コマンドの制御。
* [コンプライアンス、監査・モニタリング](/jp/enterprise/compliance-audit-and-monitoring) – コンプライアンス証明に使用される保証とテレメトリ。

適切なレベルでポリシーを一度定義することで、**マシンごとの設定のずれや一回限りの設定なしに**、クラウド、ハイブリッド、エアギャップ環境でDroidを実行できます。
