Codex / Claude Code / セキュリティ

Claude Code / Codexを安全に動かすためのmacOSでのローカルVM基盤

公開日: 2026年7月5日出典: Zenn / Inventit Tech

Claude CodeやCodexのようなAIエージェントを開発に使う機会が増えてきた。コード修正、コマンド実行、Terraform確認、AWS CLI操作を自然言語で依頼できる便利さの一方で、ローカルマシン上で自由にコマンドを実行させることにはリスクが伴う。本記事ではLimaを使ったmacOS上のローカルVMでAIエージェントの実行環境を分離する方法を紹介する。

なぜローカルVMに分離するのか

AIエージェントは開発者の代わりにコマンドを実行できる。これは強力だが、開発者が持つ権限をそのままAIエージェントに渡すことでもある。

ホストのホームディレクトリ全体を見える状態にしておくと、エージェントが意図せず以下にアクセスできてしまう:

AIエージェントを便利に使うためには、「エージェントがどこまで触ってよいか」を先に決めておく必要がある。

全体構成

macOS Host
  ├── agent-infra repository
  ├── ~/agent-workspace/home    # VMにマウントする専用領域
  └── Lima VM: agent-infra
        ├── Ubuntu 24.04
        ├── Claude Code / Codex / Gemini CLI
        ├── AWS CLI / Terraform
        └── mise(ツールバージョン管理)

ホストからVMに共有するのは原則として ~/agent-workspace/home だけ。エージェントの作業はこのディレクトリ配下で完結させる。

Lima VMの設定

VM定義は lima.yaml に記述。Apple Silicon Macを前提にUbuntu 24.04 ARM64イメージを使用する。

vmType: "vz"
cpus: 4
memory: "8GiB"
disk: "60GiB"
mounts:
  - location: "~/agent-workspace/home"
    writable: true

マウント設定でエージェント専用ワークスペースだけを共有し、ホストのホームディレクトリ全体にはアクセスさせない。

AWS認証情報はホストと分離

この構成では、ホスト側の ~/.aws をVMにマウントしない。AWS認証情報はVM内で独立して設定する。

AIエージェントに渡すAWS権限は、開発者本人の権限とは分ける。特にTerraformを扱う場合、エージェントには基本的に読み取り権限を渡し、terraform plan までを担当させる。apply は人間がレビューした上で実行する境界を置く。

エージェントによるTerraform applyの自動実行は、クラウド環境を誤って変更・削除するリスクがあるため避ける。

Git認証もVM専用SSH鍵で分離

GitHubへのアクセスではVM専用のSSH鍵を作成する。ホスト側のSSH秘密鍵をVMにコピーせず、エージェント用の鍵として分けることで、既存のSSH設定と切り離せる。

ssh-keygen -t ed25519 -N "" -f "$HOME/.ssh/id_ed25519_lima"

理想はAIエージェント専用のボットアカウントを用意し、そのアカウントに公開鍵を登録すること。初期検証では開発者アカウントに登録する場合も、VM用の鍵として分けておけば後から無効化しやすい。

ツール管理はmiseで再現可能に

VM内のNode.js、AWS CLI、Terraform、tflint、uv、yqなどのCLIツールは mise で管理する。これにより開発者間のバージョン差異を防ぎ、VMを作り直しても同じツールセットを再現できる。

まとめ

AIエージェントを安全に使うには、プロンプトや運用ルールだけでなく、実行環境そのものの設計が重要。今回の構成のポイント:

AIエージェントを便利な開発者として使う前に、まず「どこまで触ってよいか」をインフラとして定義する。このアプローチは、CodexやClaude Codeを本格的に開発フローに組み込む際の参考になる。

本記事はZenn / Inventit Tech(mtakahashi氏、2026年6月29日付)の記事をもとにcodexguide.jpが編集・要約したものです。