AI Roundtable Open Debate · 5 models
does not have ReadAccess right(s) for record with idというメッセージがPowerAppsからのAutomateフロー呼び出しで発生しています。ロールなどの権限を増減させずに治す方法を教えて
Answer: Modify the Flow's 'Run-only users' setting to use the creator's connection instead of the calling user's permissions. (4 of 5 models agreed)
Counterpoint: Pass all necessary record data as individual parameters from Power Apps to the flow to avoid any Dataverse read operations inside the flow.
Model Responses
Grok 4.20
Answer: To resolve the ReadAccess error without modifying any roles or permissions, pass all necessary record fields as individual parameters from PowerApps to the flow instead of passing only the record ID and then performing a Get Record action inside the flow.
The error occurs because Power Automate flows triggered from PowerApps execute Dataverse actions under the calling user's security context, which lacks ReadAccess to the specified record. When the flow receives only a record ID and then uses a 'Get record' or similar action, Dataverse performs a fresh permission check that fails. By modifying the PowerApps button or action to collect and pass every required field value as separate flow inputs (e.g., via the 'Ask in PowerApps' dynamic content), the flow receives the data directly and never needs to query the record again. This eliminates the permission check inside the flow while keeping all existing security roles unchanged. The approach requires updating the flow's trigger definition to accept the additional parameters and adjusting the internal logic to use those passed values, but no security configuration is touched. None of the other models convinced me to change this position. While they correctly identify the context issue, their primary suggestions rely on altering the flow's execution connection via Run-only users settings or using service accounts, which effectively bypasses the user's permissions by substituting a different security context. This, though practical, still engages with the permission model indirectly. My original method is more precise to the constraint of not increasing or decreasing any permissions at all, as it removes the need for a read operation entirely rather than reassigning who performs it. GPT-5.4 and Kimi mention the parameter-passing approach but subordinate it to connection changes, which are less pure solutions here.
GPT-5.4 (changed mind)
Answer: はい、主張の重心は少し変わり、最も実践的な第一回答は『Flow の Dataverse 接続を Run-only users もしくは接続参照で、対象レコードを読める固定アカウントに切り替える』です。
私は元の回答でも『実行主体の不一致が本質であり、接続ユーザー・共有・所有・渡している ID の整合を見直すべき』という方向性は維持していますが、他モデルの議論を踏まえると、ユーザーの質問に対する最短の処方箋としては、もう一段具体的に『Run-only users の接続設定を固定する』を先頭に出すべきだと考え直しました。 特に Gemini 3.1 Pro と Claude Opus 4.6 の指摘は、私の元回答の中に含まれていた『Flow 側の接続主体を見直す』という論点を、Power Apps 連携で実際にどこを操作すればよいかという運用レベルまで落としていました。質問は『ロールなどの権限を増減させずに治す方法』なので、原因を広く列挙するより、まず設定変更だけで直る代表解として Run-only users / Provided by flow owner を明示する方が適切です。 Grok と Kimi の『Power Apps 側で必要項目を全部渡して、Flow で Dataverse を再読込しない』という案も有効ですが、これはフロー設計の変更量が大きく、対象データが増えると保守性も下がります。そのため、常に第一選択とは言いにくいです。Dataverse の再取得が不要なシナリオでは優れた回避策ですが、一般論としては接続主体の固定の方が汎用的で、元のアプリ/フロー構成を壊しにくいです。 また、私が元回答で挙げた『レコード共有』『所有者やチームの見直し』『誤った ID や関連レコード参照の確認』は、今でも重要な二次確認項目です。なぜなら、接続を固定しても、実際には失敗箇所が別テーブルの参照であったり、想定外の関連レコード取得だったりするケースがあるからです。したがって、接続固定だけを唯一解とまでは言いませんが、ユーザーに最初に勧める一手としては他モデルの方がよりシャープでした。 結論として、私は根本認識自体は維持しつつも、回答の『主たる解決策』は変更します。最優先で案内すべきなのは、Power Automate 側の Dataverse 接続を、呼び出し元ユーザー依存ではなく、権限を持つ固定アカウントの接続にすることです。そのうえで直らない場合に、ID の妥当性、関連レコード参照、レコード共有や所有設計、必要値の直接受け渡しを順に確認する、という構成に改めるのが最も適切だと判断しました。
Gemini 3.1 Pro
Answer: Power Automateフローの「実行のみのユーザー(Run-only users)」設定を変更し、Dataverseの接続を権限を持つ別のアカウントに固定する方法が、最も確実かつ標準的な解決策です。
他のモデルが提示した代替案(Power Appsから必要な全データをパラメータとして渡す方法や、レコードの個別共有)も確かに機能しますが、私の当初の提案を変更するほどの優位性はありません。 まず、Grok 4.20やKimi K2.5が提案した「Power Apps側で取得したデータをフローに渡す」アプローチは、Dataverseへのアクセス自体を回避できるため論理的には有効です。しかし、フロー内で複数の関連レコードを参照したり、複雑な処理を行う場合には引数が膨大になり、アプリとフロー双方の大幅な改修(リファクタリング)を伴うため、実運用上のメンテナンス性が低下します。 また、GPT-5.4が提案する「対象レコードの個別共有」は、セキュリティロールの変更こそ回避できるものの、アクセス権(POA)の増減という点では実質的に権限設定を変更するアプローチであり、「権限を増減させずに」という要件の精神に反する懸念があります。 対照的に、フローの「実行のみのユーザー」の接続をサービスアカウントや作成者に変更するアプローチ(私、Claude Opus 4.6、Kimi K2.5が支持)は、アプリやフローのロジックを一切書き換えることなく、設定画面の数クリックのみで即座にエラーを解消できます。要件を厳密に満たしつつ、最も低コストで影響範囲が少ないため、このアプローチを最善の解決策として維持します。
Claude Opus 4.6
Answer: Power Automateフローの実行接続(Run-only users の接続設定)を、対象レコードへのアクセス権を持つサービスアカウントまたはフロー所有者の接続に切り替えることで、セキュリティロールを変更せずに解決できます。加えて、Power Apps側から必要なデータをパラメータとして渡す方法も有効な補助策です。
私の基本的な立場は変わりません。最も確実で一般的な解決策は「Run-only users の接続をフロー所有者またはサービスアカウント提供に切り替える」ことです。これについてはGemini 3.1 ProやKimi K2.5も同じ見解であり、この点での合意は強固です。 ただし、他のモデルの議論からいくつか有用な補足を認めます。 **Grok 4.20とKimi K2.5の「パラメータ渡し」アプローチについて** これは私の元の回答では触れていなかった有効なテクニックです。Power Apps側でユーザーが既に閲覧できているデータをフローにパラメータとして渡せば、フロー内でDataverseへの再読み込みが不要になり、ReadAccessチェック自体を回避できます。これは接続設定の変更が何らかの理由でできない場合の優れた代替策です。ただし、Grokが「最も有効な方法」として提示しているのはやや言い過ぎで、フロー内でレコードの更新や関連データの取得が必要な場合には使えません。あくまで「読み取り専用」のユースケースに限定される補助策です。 **GPT-5.4の詳細な診断プロセスについて** GPT-5.4が提案する「まず失敗アクションを特定し、接続ユーザーを確認し、関連レコード参照の有無を確認する」という診断ステップは非常に実践的で価値があります。特に、直接の対象レコードではなく関連テーブルの参照で失敗しているケースへの言及は重要な指摘です。ただし、最終的な解決策としてはやはり接続設定の変更に帰着するため、私の立場の根幹は変わりません。 **なぜ立場を変えないか** - Run-only usersの接続設定変更は、最も汎用的で、フロー内の全Dataverseアクションに一括で効果があり、設定変更も簡単です - パラメータ渡しは有効だが適用範囲が限定的(読み取りのみ、かつ必要データが全てPower Apps側で取得済みの場合のみ) - レコード個別共有やビジネスユニット移動は、対症療法的で運用コストが高い 結論として、私の元の回答に「Power Apps側からパラメータとしてデータを渡すことでフロー内のDataverse読み取りを省略する方法」を補助策として追加しますが、主たる推奨策は変わりません。
Kimi K2.5
Answer: フローのDataverse接続をサービスアカウント(共用アカウント)に変更するか、Power Apps側でレコードデータを取得してフローにパラメータとして渡すことで、呼び出し元ユーザーの権限に依存せずに解決できます。
他のモデルの回答は、私の当初の提示した2つのアプローチを検証し詳述するものでした。Grok 4.20はパラメータ受け渡しの有効性を、Gemini 3.1 ProとClaude Opus 4.6は「実行のみのユーザー」設定による接続変更を、それぞれ私と同様の論理で説明しました。GPT-5.4はレコード単位の共有(POA)や関連レコードの確認といった補足的な観点を加えましたが、根本的な解決策は「接続アカウントの変更」または「フローでのDataverse読み取り回避」のいずれかであり、私の立場と一致します。これらの検討結果は私の回答の妥当性を裏付けるものであり、見解を変更する必要はありませんでした。
Final Summary
The AI Roundtable identified that the error stems from the flow running under the end-user's restricted context rather than a system account. Gemini 3.1 Pro and Claude Opus 4.6 successfully convinced GPT-5.4 that the most practical fix is changing the 'Run-only users' setting to use the flow owner's connection. Grok 4.20 remained the lone holdout, arguing that passing every data field as a parameter from Power Apps is the only way to satisfy the 'no permission changes' constraint without substituting identities.
4 of 5 models agreed