本文へ移動
AI Dev Lab Japan AI開発ツール、AIコーディングエージェント、M...

OpenHandsを自己ホストする前に:Docker sandbox・Skills・SDKの権限境界を整理する

OpenHandsを自己ホストする前に:Docker sandbox・Skills・SDKの権限境界を整理するの判断ポイントを表す抽象サムネイル

OpenHandsを自己ホストできるAIコーディングエージェントとして見ると、最初に気になるのは「Claude CodeやCodexの代わりになるか」かもしれません。ただ、実務導入で先に決めるべきなのは、性能比較よりも権限境界です。

OpenHandsは、コマンドを実行し、ファイルを編集し、開発サーバーを起動し、LLMや外部サービスとつながる前提のツールです。便利なぶん、実行環境、workspace mount、APIキー、ネットワーク、Skills/AGENTS.md、SDK組み込みの境界を曖昧にしたまま入れると、あとから「どこまで許していたのか」が見えなくなります。

この記事では、公式情報を2026年6月7日に確認したうえで、OpenHandsを自己ホストまたはローカル導入する前の許可設計を整理します。OpenHands全体の導入像は、既存記事の<a href="https://ai-dev.blog.mo-gmo.com/openhands-docker-sandbox-sdk-microagents-self-hosted-agent/">OpenHandsをself-hosted agentとして使う前に</a>で扱っています。この記事ではそこから一段狭く、権限境界と許可マトリクスに集中します。

3行まとめ

VisualOpenHands導入前の3つの要点sandbox、指示ファイル、許可境界を分けて見るための最初の整理です。
sandboxは距離で見る

Docker、Process、Remoteを安全か危険かで決めず、hostとの距離、secret、監査ログ、運用責任で分けます。

Skillsは行動ルール

AGENTS.mdやSkillsは権限管理そのものではなく、agentに読ませる作業ルールとして設計します。

許可マトリクスを先に作る

ファイル操作、コマンド実行、ネットワーク、外部API、LLM/APIキーの許可範囲を最初に決めます。

OpenHandsを使えるかではなく、どの条件なら使ってよいかを先に決めると判断しやすくなります。

  • OpenHands導入前は、Docker sandbox、Process sandbox、Remote sandboxを「安全か危険か」ではなく、hostとの距離、secretの渡し方、監査ログ、運用責任で分ける。
  • SkillsやAGENTS.mdは権限管理そのものではなく、エージェントに読ませる行動ルールです。実際の防御はmount、network、token scope、人間承認、review gateで設計する。
  • 自己ホストで使うなら、最初に「ファイル操作」「コマンド実行」「ネットワーク」「外部API」「LLM/APIキー」の許可マトリクスを作り、チームpilotから本番隣接運用へ段階的に広げる。

この記事でわかること

Visual導入前に確認する判断軸OpenHandsを自己ホストやチーム運用に近づける前に確認したい論点です。
sandboxの選び分け

Docker sandbox、Process sandbox、Remote sandboxを、作業範囲と運用責任で比較します。

Dockerの混同を避ける

OpenHandsのDocker sandboxとDocker社のDocker Sandboxesを別の話として整理します。

SkillsとAGENTS.md

指示ファイルに書く内容と、権限設定側で止める内容を分けます。

SDK組み込みの責任

Software Agent SDKを使うと、tool許可、ログ、停止条件、APIキー管理がアプリ側の責任になります。

段階別の許可範囲

個人検証、チームpilot、本番隣接運用で、許可、保留、禁止を切り分けます。

機能紹介にとどめず、AIコーディングエージェントに渡す権限境界を決めるための整理です。

  • OpenHandsのDocker sandbox、Process sandbox、Remote sandboxをどう選び分けるか。
  • OpenHandsの「Docker sandbox」とDocker社の「Docker Sandboxes」を混同しないための見方。
  • Skills/AGENTS.mdに何を書き、何を権限設定側で止めるべきか。
  • Software Agent SDKでOpenHandsを組み込むと、アプリ側にどの責任が移るか。
  • 個人検証、チームpilot、本番隣接運用で、どの操作を許可、保留、禁止にするか。

前提知識

VisualOpenHandsで先に分ける5つの境界AIコーディングエージェントをチャットUIではなく、実行環境を持つ開発主体として見るための整理です。
実行環境

Docker、Process、Remoteのどこでagent serverを動かすかを決めます。

ファイル操作

どのdirectoryを読める、書ける、消せる状態にするかを決めます。

コマンド実行

install、test、build、server起動、migration、deployをどこまで許すかを決めます。

ネットワークとsecret

接続先、API、credential、token scopeを作業単位で分けます。

指示とSDK

Skills、AGENTS.md、SDK、agent serverの責任を混ぜずに扱います。

この5つを分けると、導入判断を機能の有無ではなく条件の設計として扱えます。

OpenHandsは、AI-driven development向けのコミュニティ/プロダクト群として、Agent Canvas、Cloud、Enterprise、CLI、Software Agent SDKなど複数の使い方を持っています。公式Introductionでは、SDKはOpenHandsのagentic techを含むPython libraryで、エージェントをコードで定義し、ローカル実行やクラウドでのスケールに使えると説明されています。

見落としたくないのは、OpenHandsを単なるチャットUIとして見ないことです。AIコーディングエージェントは、コードを読むだけではなく、shell command、file edit、server起動、外部API、GitHub連携を扱います。導入判断は、次の5つを分けるところから始まります。

境界決めること先に起きやすい誤解
実行環境Docker、Process、Remoteのどこでagent serverを動かすかDockerなら自動的にすべて安全だと思う
ファイル操作どのdirectoryを読める、書ける、消せる状態にするかrepoを渡したらrepo外には触れないと思う
コマンド実行install、test、build、server、migration、deployを許すかテストだけのつもりで状態変更を許す
ネットワークとsecretどのdomain、API、credentialを渡すかAGENTS.mdに禁止を書けば漏れないと思う
指示とSDKSkills/AGENTS.md、SDK、agent serverの責任を分けるか指示ファイルを権限管理機能として扱う

この5つを分けると、OpenHandsを「使えるか」ではなく、「どの条件なら使ってよいか」で判断できます。

結果: 最初はDocker sandboxを基準にし、Process sandboxは例外扱いにする

VisualDocker、Process、Remoteの初期判断OpenHandsのsandboxを、向いている場面と先に決めることから比較します。
項目内容見方
Docker sandbox個人検証やチームpilotの基準にしやすい構成。mount範囲、write権限、network、secret注入、port公開を先に決めます。
Process sandboxDockerが使えない短期検証やdebug向け。hostのcredential、shell profile、未commit変更、破壊的commandに近づきます。
Remote sandbox管理された環境やチームでの再現性に向きます。credential管理、ログ保存、社内network接続、ユーザー分離が焦点になります。

Docker sandboxを選んでも、read-writeでmountしたworkspaceはagentが変更できるため、mount設計は必ずレビュー対象です。

OpenHands公式のsandbox overviewでは、OpenHands V1のsandboxを、エージェントがコマンド実行、ファイル編集、server起動を行う環境として説明しています。選択肢はDocker sandbox、Process sandbox、Remote sandboxです。

実務導入の初期判断としては、Docker sandboxを基準にし、Process sandboxは短期の個人検証やDockerが使えない環境の例外に置くのが扱いやすいです。理由は単純で、Process sandboxはhost上の通常プロセスとしてagent serverを動かすため、公式ドキュメントでも隔離がないと説明されているからです。

Docker、Process、Remoteの比較

根拠

sandbox公式情報上の位置づけ向いている場面先に決めること
Docker sandboxOpenHandsをローカルで動かす推奨候補。agent serverをDocker container内で動かす個人検証、チームpilot、外部repoの検証mount範囲、write権限、network、secret注入、port公開
Process sandboxhost上の通常プロセスとしてagent serverを動かす。隔離はないDockerが使えない短期検証、再現確認、debughostのcredential、shell profile、未commit変更、破壊的command
Remote sandboxremote environmentでagent serverを動かす管理された環境、チームでの再現性、ローカル汚染回避credential管理、ログ保存、社内network接続、ユーザー分離

Docker sandboxを選んでも、AIが編集できるworkspaceを広くmountすれば、その中のファイルは変更されます。公式Docker sandboxページでも、read-writeでmountしたworkspaceはagentに変更され得ることが説明されています。ここを読み落とすと、Dockerを使ったのに意図しない差分が出る、という失敗につながります。

まず決める最小方針

確認項目

最初のpilotでは、次のように切るとレビューしやすくなります。

項目初回の推奨広げる条件
repository検証repo、public repo、または小さなprivate repoAGENTS.mdとreview gateが整った後
workspace作業対象directoryだけpackage全体やmonorepoへ広げる時はownerを決める
secret渡さないread-only tokenから始め、scopeとログを確認する
network公式docs、package registry、LLM providerなど最小限MCP serverや社内APIは別レビュー
commandtest、lint、buildまでmigration、deploy、sudo、git pushは人間承認

この方針は、OpenHands固有というよりAIコーディングエージェント全般の初期設定です。チームでAGENTS.mdを整える場合は、<a href="https://ai-dev.blog.mo-gmo.com/team-agents-md-template-codex-claude-code-cursor-permissions-tests/">チーム向けAGENTS.mdテンプレート</a>の記事も合わせて見ると、禁止操作やテスト手順の書き方をそろえやすくなります。

Docker sandboxを基本候補にする理由と限界

VisualDocker sandboxで見るべき境界Dockerを使うこと自体ではなく、どの層をhostから離し、何を渡したかを確認します。
  1. 1agent server

    OpenHandsのagent serverをDocker container内で動かし、host上の通常プロセスから距離を取ります。

  2. 2workspace mount

    作業対象をworkspaceとして渡します。read-writeで渡したpathは変更され得ます。

  3. 3network

    外部接続を広く許すと、package取得やAPI連携だけでなく情報流出の経路も広がります。

  4. 4secret

    環境変数やtokenを渡した場合、そのtaskの実行環境に入る前提で扱います。

  5. 5Docker daemon

    hostのDocker socketを渡す設計は強い権限につながるため、別の隔離層として見ます。

OpenHandsのDocker sandboxとDocker社のDocker Sandboxesは別物として読み、どの隔離層を使っているかを確認します。

OpenHandsのDocker sandboxは、agent serverをDocker container内で動かす構成です。公式ドキュメントでは、Docker sandboxがローカル実行の推奨候補であり、Dockerがdefaultであること、openhands serve --mount-cwdで現在のdirectoryをsandbox workspaceにmountできることが説明されています。

ここで注意したいのは、OpenHandsのDocker sandboxと、Docker社が提供する「Docker Sandboxes」は別物として読む必要がある点です。

OpenHandsのDocker sandbox

根拠

OpenHandsのDocker sandboxは、OpenHandsのagent server実行環境の話です。ポイントは、hostから距離を取りつつ、作業対象をworkspaceとして渡すことです。

確認用のコマンド例は次のような形になります。

openhands serve --mount-cwd

また、環境によっては SANDBOX_VOLUMES でmountを指定できます。

export SANDBOX_VOLUMES="$PWD:/workspace:rw"

この例で重要なのは、rw で渡したworkspaceはagentが変更できるという点です。Dockerを使っていても、workspace内の削除、rename、大量生成、設定ファイル変更は起こり得ます。したがって「Dockerに入れたから安全」ではなく、「どのpathをread-writeで渡したか」をレビュー対象にします。

Docker社のDocker Sandboxes

注意点

Docker公式のDocker Sandboxesは、AI coding agentをisolated microVM sandboxで動かす製品/機能として説明されています。各sandboxが独自のDocker daemon、filesystem、networkを持ち、host systemに触れずにcontainer buildやpackage installを実行できる、という位置づけです。

Dockerのisolation layersでは、hypervisor、network、Docker Engine、workspace、credential proxyなどの層が説明されています。特に、agentにhostのDocker socketを渡すのではなく、sandbox内のDocker Engineを使わせる考え方は、AI agent運用では重要です。host Docker daemonに触れる権限は、実質的にhost全体へ強い影響を持つからです。

ただし、Docker SandboxesはDockerの提供機能であり、OpenHandsの標準Docker sandboxと同一ではありません。記事や社内メモで「Docker sandbox」とだけ書くと、どちらを指しているのか曖昧になります。導入設計書では、次のように名前を分けて書くのが安全です。

表記指すものレビュー観点
OpenHands Docker sandboxOpenHandsのagent serverをDocker containerで動かす構成mount、container image、port、env、workspace
Docker SandboxesDocker社のAI agent向けmicroVM sandbox機能microVM、policy、credential proxy、network、subscription
Remote sandboxOpenHands側でremote environmentを使う構成tenant分離、ログ、secret、network、運用責任

Dockerだけでは防げない範囲

残るリスク

Dockerを使っても、次のリスクは残ります。

  • read-writeでmountしたworkspaceは変更される。
  • agentに渡した環境変数やAPIキーは、agentの行動範囲に入る。
  • package installやweb参照を許すと、外部networkへ出る。
  • container内で生成された成果物がレビューなしに採用されると、意図しない依存や設定が混じる。
  • Docker socket、host volume、privileged実行を許すと、隔離の前提が崩れる。

つまりDockerは、最初の境界を作る手段です。運用上の安全は、mount、token、network、command、reviewを合わせて設計して初めて近づきます。

Process sandboxを選ぶなら何を許しているのか

VisualProcess sandboxで近づくhost権限便利さと引き換えに、agentがhost上の状態へ近づきやすくなる点を整理します。
項目内容見方
file accessmountしたworkspace中心ではなく、user accountが触れる範囲に近づきやすくなります。
envcontainerに明示的に渡した値だけでなく、shell profileやlocal envの影響を受けやすくなります。
CLI credentialgh、cloud CLI、package registryなど、認証済みCLIの状態に近づきます。
commandcontainer内のcommandではなく、host上のcommandとして実行され得ます。
rollbackcontainer破棄で戻せる部分が減り、host上の変更を個別に戻す必要があります。

Process sandboxは短期検証や再現確認には使えますが、チーム標準にする前にhost側の未commit変更とcredentialを確認します。

Process sandboxは、OpenHandsのagent serverをhost上の通常プロセスとして動かす構成です。公式ドキュメントでは、Dockerが使えないlocal development、一部のCI、container外でしか再現しないdebugなどで使う場面が挙げられています。

問題は、便利な代わりにhostとの距離が近いことです。agentは、あなたのuser accountがアクセスできるfile、command、credential、認証済みCLIに近い場所で動きます。

Process sandboxで増えるリスク

比較基準

観点Docker sandboxProcess sandbox
file accessmountしたworkspaceが中心user accountが触れる範囲に近づきやすい
envcontainerに渡したものが中心shell profileやlocal envの影響を受けやすい
CLI credential明示的に入れたものが中心gh、cloud CLI、package registryなど認証済み状態に近い
commandcontainer内で実行host上のcommandとして実行され得る
rollbackcontainer破棄で戻せる部分があるhost上の変更は個別に戻す必要がある

Process sandboxを絶対に使ってはいけない、という話ではありません。Dockerが使えない環境で短く挙動を見る、trusted repoで小さな修正を試す、container外でだけ出る不具合を確認する、といった使い方はあります。ただし、チーム導入の標準にする前には、次のチェックを通した方がよいです。

git status --short
git diff --stat
git diff --name-only

この3つは、OpenHandsに限らず、AI agentに作業を渡す前の最低限の確認です。未commit変更、secretを含むファイル、生成物、lockfile、環境固有ファイルが混ざっている場合は、agentに渡す前に作業treeを分けます。

Process sandboxの最低ルール

確認項目

Process sandboxを使うなら、AGENTS.mdやチームルールに次のような条件を入れます。

AI agent execution rules:

- Do not edit files outside the repository root.
- Do not read or print secrets, tokens, private keys, or local credential files.
- Do not run deployment, migration, destructive cleanup, or git push commands.
- Before changing files, summarize the planned files and commands.
- After changes, report git diff --stat and test results.
- Stop when authentication, billing, production data, or customer data is required.

このルールは防御の最後の層ではありません。あくまでagentの行動を揃える文脈です。実際には、secretを置かない、権限の強いCLIを無効にする、networkを絞る、作業用userを分ける、といった制御が必要になります。

SkillsとAGENTS.mdは権限ではなく行動ルールとして設計する

Visual指示ファイルに書くもの、書かないものAlways-on context、on-demand skill、task promptを役割で分けます。
項目内容見方
AGENTS.mdrepo目的、編集範囲、禁止操作、テスト手順、review基準を書く。APIキーやprivate tokenは書きません。
General Skillssetup、用語、設計原則、よくある失敗を書く。secretや社内限定URLの無制限な列挙は避けます。
Keyword-triggered Skillsmigration手順、review手順、release手順を書く。人間承認なしのdeploy手順は入れません。
task prompt今回だけの対象issue、制約、完了条件を書く。長期ルールや秘密情報は置きません。

自然文のルールは必要ですが、実際の防御はmount、network、token scope、人間承認、review gateで設計します。

OpenHandsのSkillsは、domain-specific knowledge、expert guidance、automated task handlingを追加するための仕組みとして説明されています。公式Skills Overviewでは、常時注入されるcontextとしてAGENTS.mdが示され、on-demand skillはkeywordやagent判断で読み込まれるものとして扱われています。

ここで混同しやすいのは、SkillsやAGENTS.mdを「権限管理」として見てしまうことです。この見方は避けたいところです。

Always-on contextとon-demand skillを分ける

使い分け

種類使う目的書くべき内容書かないもの
AGENTS.mdrepo全体で常に守るルールrepo目的、編集範囲、禁止操作、テスト手順、review基準APIキー、private token、個人情報
General Skills特定domainの作業ガイドsetup、用語、設計原則、よくある失敗secret、社内限定URLの無制限な列挙
Keyword-triggered Skills特定taskで呼ぶ手順migration手順、review手順、release手順人間承認なしのdeploy手順
task prompt今回だけの依頼対象issue、制約、完了条件長期ルール、秘密情報

AGENTS.mdに「秘密情報を読まない」と書くのは必要です。ただし、それだけでは安全になりません。agentがそのfileを読める場所にsecretを置いていれば、ミスやprompt injectionで触れる可能性は残ります。AIコーディングエージェントのprompt injection対策は、<a href="https://ai-dev.blog.mo-gmo.com/ai-coding-agent-prompt-injection-issues-docs-mcp-guardrails/">Issue・Docs・MCPを読ませる前に決めること</a>でも扱っていますが、自然文の指示と実際の権限は分けて考えるべきです。

AGENTS.mdに入れる実務項目

確認項目

OpenHands向けにAGENTS.mdを整えるなら、最初は次の7項目で十分です。

  1. repositoryの目的と主要directory。
  2. 編集してよい範囲と触ってはいけない範囲。
  3. 禁止するcommand。
  4. test、lint、typecheck、buildの実行順。
  5. secret、credential、個人情報の扱い。
  6. PRやdiffで人間が確認する観点。
  7. 失敗時に停止する条件。

たとえば、次のような短いルールから始めます。

Permission boundary:

- Read and edit only files under src/, tests/, docs/, and package metadata needed for the task.
- Do not edit .env, credential files, deployment manifests, or production config without explicit approval.
- Do not run migration, deploy, git push, or destructive cleanup commands.
- Prefer read-only inspection before changing files.
- If external API access is required, stop and ask for human confirmation.

この内容は、OpenHandsだけでなくCodex、Claude Code、Cursor、OpenCodeにも転用できます。ツールごとに指示ファイル名や読み込み方は違っても、repo側に置く運用ルールは共通化できます。

Software Agent SDKで責任がどこへ移るか

VisualSDK組み込みで増える設計責任OpenHandsを使う側から、アプリやworkflowに組み込む側へ移るときの責任の流れです。
  1. 1user input

    外部から入る依頼文、issue、PR、社内データをどこまでagentに読ませるかを決めます。

  2. 2tool許可

    file edit、command、browser、GitHub、外部APIの許可範囲をアプリ側で持ちます。

  3. 3agent lifecycle

    開始、停止、timeout、失敗時の中断、再試行、workspace削除を設計します。

  4. 4APIキー

    model provider keyやGitHub tokenを用途別にscope分離し、必要なtaskにだけ渡します。

  5. 5ログとrate limit

    diff、command、失敗ログ、tool call、token usageを監査できる形で残します。

SDKではagentの便利さだけでなく、停止条件、監査、token scope、tenant分離をアプリ側が持つ前提になります。

OpenHands Software Agent SDKは、PythonとREST APIでcode work向けagentを作るためのSDKです。GitHub READMEでは、one-off task、dependency update、multi-agentが必要なrefactorやrewriteなどに使えると説明されています。また、agentはlocal machineをworkspaceにできるだけでなく、Agent Serverを使ってDockerやKubernetesなどのephemeral workspaceでも動かせるとされています。

SDKを使うと、OpenHandsを単に使う側から、自分のアプリやworkflowに組み込む側へ移ります。すると責任も変わります。

UI利用とSDK組み込みの違い

責任分界

使い方主な責任見落としやすい点
Local GUI / CLI作業repo、sandbox、モデル、prompt、reviewlocal credentialや未commit変更
Agent Canvas / Cloudaccount、integration、RBAC、予算、共有組織権限とログ保存
SDK組み込みuser input、tool許可、agent lifecycle、APIキー、ログ、rate limitアプリ側が失敗時停止と監査を持つ
Remote Agent Serverworkspace生成、tenant分離、network、credentialユーザーごとの隔離と削除ポリシー

SDK組み込みで特に重要なのは、LLM/APIキーの置き場所です。model provider key、GitHub token、package registry token、SaaS API key、社内API tokenは、まとめて1つのenvとして渡さない方がよいです。用途別にscopeを切り、agentが必要な時だけ渡し、ログに残る情報を最小化します。

SDKのDocker sandboxで確認すること

評価基準

SDKのDocker sandbox guideでは、DockerWorkspaceを使ってDocker container内でagent serverを動かし、workspace lifecycleをcontext managerで扱う例が示されています。VS Codeやbrowser toolをDocker環境で扱う例もあります。

ここで確認すべきなのは、サンプルが動くかだけではありません。チームで組み込む場合は、次の項目がreview対象です。

項目確認質問
imageどのbase imageを使い、追加toolを誰が管理するか
workspaceuserごと、taskごとに分離されるか
lifecycletask完了後にcontainerやvolumeを消すか、残すか
networkdocs、package registry、LLM provider以外に出られるか
secretkeyをcontainer envに入れるか、proxyやvaultで渡すか
logscommand、diff、token usage、errorをどこまで保存するか
failureauth、billing、production dataが必要な時に停止するか

OpenHands SDK releasesは2026年6月7日時点でGitHub Releases上の更新が続いており、Software Agent SDKのlatestとしてv1.26.0が表示されていました。具体的なversion番号を運用ドキュメントに入れる場合は、公開時点のrelease notesを再確認し、固定するversionと更新手順をセットで書くのが安全です。

自己ホスト前の許可マトリクスを作る

Visual段階別に決める許可範囲個人検証、チームpilot、本番隣接運用で、許可、保留、禁止を分けます。
項目内容見方
ファイル操作repo内readとsrc/testsのeditから始め、config edit、delete、renameは承認付きにします。.envや秘密鍵のreadは許可しません。
コマンド実行testやbuildは許可しやすい一方、migration、deploy、git push、破壊的commandは承認や禁止の対象にします。
ネットワークpackage registry、GitHub、docs参照を区別し、社内APIや任意外部送信は接続先レビューを通します。
外部APIread-only tokenから始め、write権限や管理者tokenはtask単位の承認にします。
LLM/APIキー共通envでまとめて渡さず、用途別scope、短寿命、ログ最小化を前提にします。

何を許したかをチームで共有できていない状態では、sandbox設定より先に運用事故が起きやすくなります。

OpenHands導入の失敗は、設定が難しいことよりも、「何を許したか」をチームで共有していないことから起きます。そこで、最初に許可マトリクスを作ります。

ファイル操作

評価基準

操作個人検証チームpilot本番隣接
repo内のread許可許可許可。ただしsecret fileは除外
src/tests/のedit許可許可PR review必須
config edit保留承認付き承認付き、owner review必須
.envや秘密鍵のread禁止禁止禁止
repo外file access禁止禁止原則禁止
delete / rename小さな範囲のみ承認付き承認付き、rollback確認

コマンド実行

評価基準

command種別個人検証チームpilot本番隣接
test / lint / typecheck許可許可許可
build許可許可許可。ただし生成物の扱いを明記
package install保留承認付きlockfile review必須
local server起動許可許可portとnetworkを確認
migration禁止承認付き原則人間が実行
deploy禁止禁止人間承認と別workflow
sudo / privileged command禁止禁止禁止
git push禁止禁止原則禁止。PR作成workflowに限定

ネットワークと外部API

確認項目

接続先初期方針広げる条件
公式docs許可allowlistにする
package registry必要時のみlockfileとinstall logを確認
LLM provider必須範囲だけkeyとbudgetを分ける
GitHub APIread-onlyからissue/PR writeは承認付き
MCP serverread-only toolからtool allowlistとログを必須にする
社内API初期は禁止sandbox、test data、token scopeを分ける
billing / payment API禁止本番操作は人間承認workflowへ分離

MCPを併用する場合は、tool、resource、promptの違いも権限設計に影響します。基礎を整理したい場合は、<a href="https://ai-dev.blog.mo-gmo.com/mcp-tools-resources-prompts-permission-design/">MCPとは何か</a>の記事を先に読むと、OpenHandsに外部toolを渡す時の境界を説明しやすくなります。

導入パターン別の落としどころ

VisualOpenHands導入の段階設計一気に全権限を渡さず、検証から本番隣接運用まで段階を分けます。
  1. 個人検証

    Docker sandbox、secretなし、小さなrepo、manual reviewありで始め、差分がレビューしやすいかを見ます。

  2. チームpilot

    AGENTS.md、許可マトリクス、review owner、token scope、ログ保存をそろえます。

  3. 共通ルール化

    OpenHandsだけでなく、Codex、Claude Code、Cursorなどにも使えるrepoルールとして整えます。

  4. 本番隣接運用

    本番データやdeployに近い操作は、承認、監査ログ、rollback、owner reviewを前提に扱います。

最初のpilot issueは、受け入れ条件、test command、変更範囲、rollbackが明確なものから選びます。

OpenHandsを導入する時は、一気に全権限を渡さず、段階を分けます。

個人検証

条件

個人検証では、Docker sandboxを基本にし、secretなし、小さなrepo、manual reviewありで始めます。目的は、OpenHandsが自分の開発taskに合うかを見ることです。

この段階で見るべき結果は、完成度よりも「差分がレビューしやすいか」です。AI agentが速く書けても、変更理由、実行command、失敗ログ、残タスクが見えなければチーム導入には向きません。

チームpilot

確認項目

チームpilotでは、AGENTS.md、許可マトリクス、review owner、token scope、ログ保存をそろえます。OpenHands用のルールだけを作るのではなく、Codex、Claude Code、Cursorなど他のAI coding toolにも共通するrepoルールとして作る方が運用しやすいです。

最初のpilot issueには、次の条件を置くと評価しやすくなります。

  • 受け入れ条件が明確。
  • test commandが明確。
  • secretや本番dataが不要。
  • 変更範囲が小さい。
  • rollbackが簡単。
  • reviewで品質を判断できる。

本番隣接運用

注意点

本番隣接運用では、OpenHandsの設定だけでは足りません。private repo、customer data、deployment、billing API、社内API、package registry tokenが関わる場合は、AI agent導入ではなく、社内権限設計のレビューとして扱います。

この段階で必要なのは、次のような運用項目です。

  • userごとのagent実行権限。
  • taskごとのworkspace分離。
  • GitHub tokenやSaaS tokenのscope管理。
  • command logとdiff logの保存。
  • secretが出た時の検知と停止。
  • 失敗時のrollback手順。
  • 人間承認なしで実行してよいoperationの一覧。

失敗点: Docker sandboxとSkillsを安全装置として過信する

Visual過信しやすい2つの安全装置Docker sandboxとSkillsは重要ですが、それだけで守り切れるわけではありません。
Docker sandbox

hostとの距離は作れますが、read-write mount、渡したsecret、広いnetwork、container imageのリスクは残ります。

Skills / AGENTS.md

agentに読ませるルールであり、権限を物理的に止める機能ではありません。

prompt injection

外部docs、issue、PR、生成コードを読むagentには、自然文の禁止だけでは届かないリスクがあります。

review gate

diff、command、失敗ログ、残タスクを人間が確認できる状態にしてから運用を広げます。

repo内にsecretが混在し、local CLIが本番へ認証済みで、review担当やrollbackが決まっていない場合は権限設計を先に直します。

過信が起きる理由

根拠

OpenHands導入で避けたいのは、「Docker sandboxを使っている」「AGENTS.mdに禁止を書いた」という2つを安全の根拠にしてしまうことです。

Docker sandboxは、hostとの距離を作ります。しかし、read-writeでmountしたworkspaceは変更できます。環境変数で渡したsecretはagentの実行環境に入ります。networkを広く許せば、外部サービスへ情報が出る可能性があります。

SkillsやAGENTS.mdは、agentに読ませるルールです。しかし、権限を物理的に止める機能ではありません。prompt injection、曖昧なtask、誤ったtool選択、未レビューのgenerated codeに対して、自然文のルールだけで守り切るのは現実的ではありません。

導入しない方がよい条件

確認項目

次の条件がそろっている場合は、OpenHandsの導入前に権限設計をやり直した方がよいです。

  • repo内に.env、private key、credential fileが混在している。
  • 開発者のlocal CLIが本番環境へ認証済みになっている。
  • migrationやdeployを日常的にlocal commandで実行している。
  • AGENTS.mdやreviewルールがない。
  • AI agentの変更を誰がreviewするか決まっていない。
  • 失敗時に戻す手順がない。
  • network allowlistやtoken scopeを管理できない。

この状態でAI agentを入れると、便利さよりも監査不能な操作が増えます。まずrepo構成、credential、CI、review gateを整える方が近道です。

実務で使うなら

Visual最初の1週間で測ること成果を急がず、許可境界とレビューしやすさを確認するための進め方です。
  1. 1日目

    検証repoでDocker sandboxを使い、差分とcommand logを確認します。

  2. 2日目

    AGENTS.mdを追加し、禁止操作、test command、停止条件を書きます。

  3. 3日目

    read-only tokenだけを試し、GitHub issueやPR情報の取得に限定します。

  4. 4日目

    小さなbugfixを任せ、reviewで変更品質と説明の十分さを見ます。

  5. 5日目

    許可マトリクスを更新し、チームpilotへ進むか判断します。

OpenHandsがworkflowに合うかだけでなく、どの権限を渡すと危ないかも同時に見ます。

最初の1週間の評価基準

条件

実務でOpenHandsを使うなら、最初の1週間は「成果を出す」より「許可境界を測る」期間にします。

1日目は、検証repoでDocker sandboxを使い、差分とcommand logを確認します。2日目はAGENTS.mdを追加し、禁止操作、test command、停止条件を書きます。3日目はread-only tokenだけを試し、GitHub issueやPR情報の取得に限定します。4日目は小さなbugfixを任せ、reviewで変更品質を見ます。5日目は許可マトリクスを更新し、チームpilotへ進むか判断します。

この流れなら、OpenHandsがチームのworkflowに合うかだけでなく、どの権限を渡すと危ないかも見えます。

チーム向けの最小チェックリスト

確認項目

  • OpenHandsの実行環境をDocker、Process、Remoteのどれにするか決めた。
  • workspace mountのpathとread/writeを明記した。
  • .env、credential、private keyをagentから見えない場所へ移した。
  • AGENTS.mdに禁止操作、テスト手順、停止条件を書いた。
  • package install、migration、deploy、git pushをどう扱うか決めた。
  • GitHub tokenやSaaS tokenをread-onlyから始めた。
  • network allowlistまたは接続先レビューを用意した。
  • agentのdiff、command、失敗ログを残す場所を決めた。
  • review ownerとrollback手順を決めた。

セキュリティ・コスト注意

Visual導入前に分けるセキュリティとコストsandbox選択だけでなく、secret設計と利用コストを別々に見ます。
secret設計

model provider key、GitHub token、package registry token、SaaS API key、社内API tokenを同じ環境変数群で渡さないようにします。

scope分離

必要なtokenを、必要なtaskに、最小scopeで渡し、ログに残る情報を最小化します。

契約と費用

OpenHands本体、OpenHands Cloud/Enterprise、LLM provider、Docker Sandboxesの費用を分けて見ます。

長時間実行

Software Agent SDKでagentを長く動かす場合、token usage、tool call、retry、failed runのコストが積み上がります。

この記事は公式docs、GitHub Releases、Docker docsを確認し、導入判断に必要な範囲を整理しています。

セキュリティ面では、OpenHandsのsandbox選択よりも、secretを渡す設計の方が事故に直結します。model provider key、GitHub token、package registry token、SaaS API key、社内API tokenを同じ環境変数群で渡すのは避けます。必要なtokenを、必要なtaskに、最小scopeで渡します。

コスト面では、OpenHands自体、OpenHands Cloud/Enterprise、LLM provider、Docker Sandboxesを分けて見ます。OpenHands公式のcontributing pageではMIT Licenseとenterprise directoryの別licenseが説明されています。一方で、OpenHands CloudやEnterprise、Docker Sandboxes、LLM API利用には別の契約や費用が発生し得ます。特にSoftware Agent SDKで長時間agentを動かす場合、token usage、tool call、retry、failed runのコストが積み上がります。

この記事にはスポンサー、アフィリエイト、無償提供、検証環境提供はありません。公式docs、GitHub Releases、Docker docsを確認し、導入判断に必要な範囲だけを整理しています。

FAQ

VisualOpenHands権限設計のよくある疑問Docker、Process、Skills、他のAI coding toolとの併用で迷いやすい点です。
Docker sandboxなら安全と言えますか

言い切れません。mount、token、network、human reviewを合わせて安全性を判断します。

Process sandboxは使ってはいけませんか

禁止ではありません。短期検証やdebugには使えますが、secretを含むrepoやチーム標準では慎重に扱います。

SkillsやAGENTS.mdに秘密情報を書いてよいですか

書きません。行動ルール、setup手順、test command、禁止操作、review基準を書く場所として扱います。

CodexやClaude Codeと併用できますか

併用できますが、repo側のルール、worktree、branch、review基準を整理してから同時利用します。

複数のagentを使うほど、toolごとの設定よりrepo共通の権限ルールが重要になります。

Docker sandboxなら安全と言えますか

言い切れません。OpenHandsのDocker sandboxはhostとの距離を取りやすい初期候補ですが、read-writeでmountしたworkspace、渡したsecret、network、container image、Docker設定のリスクは残ります。安全性は、Dockerだけでなく、mount、token、network、human reviewを合わせて決まります。

Process sandboxは使ってはいけませんか

禁止ではありません。Dockerが使えない環境での短期検証や、container外でしか再現しないdebugには使えます。ただし、host上のfile、env、認証済みCLIに近い場所で動くため、チーム標準やsecretを含むrepoでは慎重に扱うべきです。

SkillsやAGENTS.mdに秘密情報を書いてよいですか

書かないでください。AGENTS.mdやSkillsには、行動ルール、setup手順、test command、禁止操作、review基準を書きます。APIキー、private token、customer data、個人情報は書かず、権限分離されたsecret管理で扱います。

OpenHandsとCodexやClaude Codeを併用できますか

併用自体は可能ですが、repo側のルールが分かれていると混乱します。AGENTS.md、CLAUDE.md、tool設定、MCP設定、review基準を整理し、同じrepoで複数agentが同時に触る場合はworktreeやbranchも分けます。併用設計は<a href="https://ai-dev.blog.mo-gmo.com/codex-claude-code-dual-agent-workflow-permissions-review-cost/">CodexとClaude Codeを同じリポジトリで併用する前に決めること</a>も参考になります。

次に読むなら

MCPとは何か

OpenHandsにMCP serverや外部toolを渡す前に、tool、resource、promptの境界を整理したい時に役立ちます。

権限設計やMCP設計レビューをチームで整理したい場合は、<a href="https://ai-dev.blog.mo-gmo.com/contact/">お問い合わせ</a>から相談できます。AIコーディングエージェント、MCP、sandbox運用の更新を追いたい場合は、<a href="https://ai-dev.blog.mo-gmo.com/newsletter/">ニュースレター</a>も利用できます。

更新履歴

Visual確認した情報と更新内容この記事で確認した一次情報と、本文に反映した扱いです。
  1. 2026-06-07

    OpenHands公式Docs、OpenHands Software Agent SDK GitHub Releases、Docker Sandboxes公式Docsを確認しました。

  2. 2026-06-07

    OpenHands自己ホスト前の権限境界として、sandbox、Skills/AGENTS.md、SDK、許可マトリクスを整理しました。

  3. 2026-06-07

    X/Twitterのtracked accountsは本文の技術的根拠に使わず、公式一次情報に基づいて執筆しました。

公開後も公式docsやSDK releasesの更新に合わせて、sandboxとSDKの説明は見直し対象になります。

  • 2026-06-07: OpenHands公式Docs、OpenHands Software Agent SDK GitHub Releases、Docker Sandboxes公式Docsを確認し、OpenHands自己ホスト前の権限境界として整理しました。
  • 2026-06-07: X/Twitterのtracked accountsについて、公開検索では直近72時間の確証ある需要シグナルを取得できませんでした。本文の技術的根拠には使わず、公式一次情報に基づいて執筆しました。

参照した主な情報源

  • OpenHands Introduction: https://docs.openhands.dev/overview/introduction
  • OpenHands Sandbox Overview: https://docs.openhands.dev/openhands/usage/sandboxes/overview
  • OpenHands Docker Sandbox: https://docs.openhands.dev/openhands/usage/sandboxes/docker
  • OpenHands Process Sandbox: https://docs.openhands.dev/openhands/usage/sandboxes/process
  • OpenHands Skills Overview: https://docs.openhands.dev/overview/skills
  • OpenHands General Skills: https://docs.openhands.dev/overview/skills/repo
  • OpenHands SDK Docker Sandbox: https://docs.openhands.dev/sdk/guides/agent-server/docker-sandbox
  • OpenHands Software Agent SDK Releases: https://github.com/OpenHands/software-agent-sdk/releases
  • OpenHands contributing and license note: https://docs.openhands.dev/overview/contributing
  • Docker Sandboxes: https://docs.docker.com/ai/sandboxes/
  • Docker Sandboxes isolation layers: https://docs.docker.com/ai/sandboxes/security/isolation/