次のような場合に使用: ユーザーがSalesforce(営業管理システム)のオブジェクト(データの種類)に対して、組織全体のデフォルト共有設定(OWD = 初期状態での情報公開範囲)を確認または変更したい場合。 **発動する場面:** - 現在のOWD設定を確認したい - 共有のデフォルト設定を表示したい - デフォルトのアクセス権限(「非公開」「読み取り専用で公開」「読み取り・書き込み可で公開」「親レコードに準ずる」など)を変更したい - 標準オブジェクト(あらかじめ用意されたデータ種類)またはカスタムオブジェクト(独自に作成したデータ種類)の内部・外部アクセスを設定したい - 「組織全体のデフォルト」に言及している - レコード(データ行)を非公開にしたい、または閲覧者を制限したい - オブジェクトの初期公開範囲を管理したい - .settings-meta.xml 形式ファイルの共有フィールドや .object-meta.xml ファイルの sharingModel に関連している **発動しない場面:** 共有ルール、条件付き共有、役職階級、または手動での共有について質問されている場合は、この機能を使わず「platform-sharing-rules-generate」に任せてください。
Use when the user wants to retrieve or update Organization-Wide Default (OWD) sharing settings for Salesforce objects. TRIGGER when: user asks to check current OWD settings, view sharing defaults, change default access levels (Private, Public Read Only, Public Read/Write, Controlled by Parent), configure internal or external access for standard or custom objects, mentions org-wide defaults, wants to make records private or restrict who can see records, wants to control default record visibility for an object, or references .settings-meta.xml sharing fields or sharingModel in .object-meta.xml files. DO NOT TRIGGER when: user asks about sharing rules, criteria-based sharing, role hierarchy, or manual sharing — delegate to platform-sharing-rules-generate.
Salesforce の組織内で、標準オブジェクトとカスタムオブジェクト(自社で作成したデータ構造)の組織全体デフォルト(OWD、複数ユーザー間で共有する際のデフォルトアクセス権限)を取得・更新します。OWD は、ユーザーが自分で所有していないレコードにアクセスできるベースラインレベルを定義します。
進める前に、ユーザーに次の点を確認してください(不明な場合):
進める前に、次の項目を集めるか推測してください:
Account、Contact)またはカスタムオブジェクト API 名(例:Invoice__c)デフォルト設定(指定がない場合):
すべてのステップは順序立てて実行してください。スキップや順序変更はしません。
Salesforce CLI Tooling API を使用して現在の OWD 設定をクエリ:
sf data query --query "SELECT QualifiedApiName, InternalSharingModel, ExternalSharingModel FROM EntityDefinition WHERE QualifiedApiName = '<ObjectName>'" --use-tooling-api --target-org <org>
すべての OWD 設定を一度に取得する場合:
sf data query --query "SELECT QualifiedApiName, InternalSharingModel, ExternalSharingModel FROM EntityDefinition WHERE IsCustomizable = true ORDER BY QualifiedApiName" --use-tooling-api --target-org <org>
結果を見やすく表示 — references/access_levels.md で有効な値を確認し、ユーザーに対して整形されたテーブルを表示してください。
変更不可・固定 OWD をチェック — references/access_levels.md の「変更不可・固定 OWD オブジェクト」セクションを読んでください。リクエストされた変更が固定値(例:価格表の外部 OWD)をターゲットにしている場合は、直ちに中止してユーザーに、この値はプラットフォームで固定されており変更不可であることを説明してください。デプロイを試みないでください。
リクエストされたアクセスレベルを検証 — references/access_levels.md を読んで、その値が対象オブジェクトに対して有効かを確認してください。値が許可されているセットに含まれていない場合は、どの値が有効かを説明し、ユーザーに1つ選ぶよう求めてください。代替値を推測しないでください。
メタデータ API を使用してオブジェクトメタデータを取得(標準オブジェクト・カスタムオブジェクト共通):
sf project retrieve start --metadata CustomObject:<ObjectName> --target-org <org>
これにより <ObjectName>.object-meta.xml(<sharingModel> と <externalSharingModel> を含む)を取得します。詳細は references/metadata_api_approach.md を参照してください。
共有設定を修正 — オブジェクトの .object-meta.xml 内の <sharingModel>(内部アクセス)および/または <externalSharingModel>(外部アクセス)を更新してください。詳細は references/metadata_api_approach.md を参照してください。
デプロイ前の確認 — デプロイする前に、以下を確認してください:
ControlledByParent を使用していることreferences/access_levels.md 参照)references/access_levels.md の「オブジェクト間制約」参照)references/access_levels.md に変更不可・固定として記載されていないこと更新された設定をデプロイ:
sf project deploy start --metadata CustomObject:<ObjectName> --target-org <org>
デプロイ失敗時の対応(最大 2 回まで) — デプロイが失敗した場合:
sf project retrieve start --metadata CustomObject:<ObjectName> --target-org <org>)して、ユーザーに今後の進め方を尋ねてください。変更を検証 — フェーズ 1 のステップ 1 のクエリを再実行してください。
| 制約 | 理由 |
|---|---|
マスター詳細関連のあるオブジェクトは ControlledByParent を使用する必要がある |
プラットフォームが強制 — 他の値は失敗する |
| 外部アクセスは内部アクセスより許容的にできない | Salesforce は外部 > 内部の構成を拒否する |
| 一部のオブジェクトは変更不可・固定 OWD を持つ(例:価格表の外部、ユーザー、活動の外部) | プラットフォーム強制 — 事前に不可を説明し、デプロイを試みない |
価格表は内部 OWD で Use(読み取り選択)または No Access(アクセスなし)のみ受け付け;外部は常に None |
標準アクセスレベル(非公開/読み取り/読み書き)は無効 |
| OWD をより制限的に変更すると共有の再計算がトリガーされる | 大規模な組織では相当の時間がかかる — ユーザーに警告 |
カスタムオブジェクトはデフォルトで作成時に Public Read/Write |
ユーザーはデフォルトが許容的であることに気付かないかもしれません |
マネージドパッケージカスタムオブジェクトの場合、名前空間プレフィックス付き完全 API 名を使用(例:ns__Object__c) |
名前空間プレフィックス付きオブジェクトはクエリとメタデータ取得の両方でプレフィックスが必要 |
| クエリ前に常に組織接続を確認 | 混乱を招くエラーメッセージを防止 |
| 変更あたり最大 2 回のデプロイ試行 | 無制限の再試行を防止 — 2 回失敗したら停止してユーザーにレポート |
| 問題 | 解決方法 |
|---|---|
更新時に INSUFFICIENT_ACCESS エラー |
ユーザーが共有管理権限またはシステム管理者プロファイルが必要 |
| OWD 変更がスタックしているように見える | 共有再計算中 — 設定 > 共有設定で進捗を確認 |
| カスタムオブジェクトがクエリで見つからない | __c サフィックスを含む完全 API 名を使用してください |
ControlledByParent が利用不可 |
オブジェクトにマスター詳細関連がない — 非公開、読み取り専用、または読み書き可能を使用 |
| 外部アクセスフィールドが表示されない | 外部共有モデルは外部組織全体デフォルトが有効な場合のみ表示 |
| クエリが結果を返さない | オブジェクトがカスタマイズ不可または API 名が正確でない — スペルを確認 |
| 価格表の無効な値でデプロイが失敗 | 価格表は Use/None(内部)のみ受け付け、外部は固定で None — 他の値で再試行しないでください。ユーザーに説明 |
納品物:
| 必要性 | 委譲先 |
|---|---|
| OWD を制限した後に共有ルールを作成 | platform-sharing-rules-generate スキル |
| メタデータ変更を別の組織にデプロイ | platform-metadata-deploy スキル |
| ファイル | いつ読むか |
|---|---|
references/access_levels.md |
OWD アクセスレベル値を検証・説明する場合 |
references/metadata_api_approach.md |
Tooling API の代わりにメタデータ API を使用して OWD を更新する場合 |
examples/get_owd_output.md |
整形出力が期待される構造と一致することを確認する場合 |
examples/update_owd_output.md |
更新確認が期待される構造と一致することを確認する場合 |
Retrieve and update Organization-Wide Default (OWD) sharing settings for standard and custom objects in a Salesforce org. OWDs define the baseline level of access users have to records they do not own.
Before proceeding, confirm with the user if not already clear:
Gather or infer before proceeding:
Account, Contact) or custom object API name (e.g., Invoice__c)Defaults unless specified:
All steps are sequential. Do not skip or reorder.
Query current OWD settings using the Salesforce CLI Tooling API:
sf data query --query "SELECT QualifiedApiName, InternalSharingModel, ExternalSharingModel FROM EntityDefinition WHERE QualifiedApiName = '<ObjectName>'" --use-tooling-api --target-org <org>
For retrieving all OWD settings at once:
sf data query --query "SELECT QualifiedApiName, InternalSharingModel, ExternalSharingModel FROM EntityDefinition WHERE IsCustomizable = true ORDER BY QualifiedApiName" --use-tooling-api --target-org <org>
Present results clearly — read references/access_levels.md for valid values and display a formatted table to the user.
Check for immutable/fixed OWD — read references/access_levels.md "Immutable / Fixed OWD Objects" section. If the requested change targets a fixed value (e.g., Price Book external OWD), stop immediately and explain to the user that this value is platform-fixed and cannot be changed by any means. Do not attempt a deploy.
Validate the requested access level — read references/access_levels.md to confirm the value is valid for the target object. If the value is not in the allowed set for that object, explain what values are valid and ask the user to choose one. Do not guess alternative values.
Retrieve the object metadata using the Metadata API (same command for both standard and custom objects): sf project retrieve start --metadata CustomObject:<ObjectName> --target-org <org>. This retrieves <ObjectName>.object-meta.xml containing <sharingModel> and <externalSharingModel>. See references/metadata_api_approach.md for the full procedure.
Modify the sharing settings — update the <sharingModel> (internal access) and/or <externalSharingModel> (external access) in the object's .object-meta.xml. Read references/metadata_api_approach.md for details.
Pre-deploy verification — before deploying, confirm:
ControlledByParentreferences/access_levels.md)references/access_levels.md)references/access_levels.mdDeploy the updated settings: sf project deploy start --metadata CustomObject:<ObjectName> --target-org <org>.
Handle deploy failure (max 2 attempts): If the deploy fails:
sf project retrieve start --metadata CustomObject:<ObjectName> --target-org <org>), and ask the user how to proceed.Verify the change by re-running the query from Phase 1, Step 1.
| Constraint | Rationale |
|---|---|
Objects with Master-Detail relationships must use ControlledByParent |
Platform enforces this — attempting other values fails |
| External access cannot be more permissive than internal access | Salesforce rejects configurations where external > internal |
| Some objects have immutable/fixed OWD (e.g., Price Book external, User, Activity external) | These are platform-enforced — explain impossibility upfront, never attempt a deploy |
Price Book only accepts Use (ReadSelect) or No Access (None) for internal OWD; external is always None |
Standard access levels (Private/Read/ReadWrite) are invalid for Price Book |
| Changing OWD to more restrictive triggers sharing recalculation | This can take significant time on large orgs — warn the user |
Custom objects default to Public Read/Write when created |
Users may not realize the default is permissive |
For managed package custom objects, use the full API name including namespace prefix (e.g., ns__Object__c) |
Namespace-prefixed objects require the prefix in both queries and metadata retrieval |
| Always verify the org connection before querying | Prevents confusing error messages |
| Maximum 2 deploy attempts per change | Prevents unbounded retry loops — after 2 failures, stop and report to the user |
| Issue | Resolution |
|---|---|
INSUFFICIENT_ACCESS error when updating |
User needs Manage Sharing permission or System Administrator profile |
| OWD change appears stuck | Sharing recalculation is running — check Setup > Sharing Settings for progress |
| Custom object not found in query | Use the full API name including __c suffix |
ControlledByParent not available |
Object has no Master-Detail relationship — use Private, Public Read Only, or Public Read/Write |
| External access field not showing | External sharing model only appears when external org-wide defaults are enabled |
| Query returns no results | Object may not be customizable or API name may be incorrect — verify spelling |
| Deploy fails with invalid value for Price Book | Price Book only accepts Use/None (internal) and external is fixed at None — do not retry with other values, explain to user |
Deliverables:
| Need | Delegate to |
|---|---|
| Creating sharing rules after restricting OWD | platform-sharing-rules-generate skill |
| Deploying metadata changes to another org | platform-metadata-deploy skill |
| File | When to read |
|---|---|
references/access_levels.md |
When validating or explaining OWD access level values |
references/metadata_api_approach.md |
When using Metadata API to update OWD instead of Tooling API |
examples/get_owd_output.md |
To verify formatted output matches expected structure |
examples/update_owd_output.md |
To verify update confirmation matches expected structure |
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。