AIエージェントのファイルが「消える」問題、解決しました
「エージェントに長時間のコーディングタスクをお願いしたら、途中でセッションが切れてすべての作業が消えた…」
Amazon Bedrock AgentCore Runtime を使ったAIエージェント開発をしていると、こういう問題に直面したことはないでしょうか。私たちRagateのチームでも、エージェントが書いたコードやインストールしたパッケージがセッション終了とともに消えてしまう問題を何度も経験してきました。
2026年3月25日、AWS がこの問題を根本から解決する新機能をリリースしました。Amazon Bedrock AgentCore Runtime のマネージドセッションストレージ(パブリックプレビュー)です。

図1: セッション停止前後の変化 ── 新機能でファイルが保持されるように
Amazon Bedrock AgentCore Runtime のセッションストレージとは?
AgentCore Runtime は、AIエージェントをマイクロVM上で動作させるサービスです。各セッションは独立したマイクロVM上で動き、CPU・メモリ・ファイルシステムがセッションごとに分離されています。
ただし、これまでのデフォルト動作ではファイルシステムは一時的でした。
- セッション中に書き込んだコード・パッケージ・成果物は、セッション終了時にすべて消える
- セッションを Stop/Resume すると、新しいマイクロVMで空のファイルシステムから再起動
- 状態を引き継ぐには、S3・DynamoDB・AgentCore Memory などへの手動保存が必要だった
マネージドセッションストレージはこの問題を解決します。AgentCore Runtime がすべての永続化をバックグラウンドで自動管理してくれるため、エージェント側のコードを変更する必要はありません。
仕組みと主な仕様
技術的には NFS v4 over localhost として実装されており、マイクロVM内のNFSサーバーがAgentCore Runtimeの耐久性ストレージへバックグラウンドでレプリケーションします。
項目 | 仕様 |
|---|---|
最大ストレージサイズ | 1 GB / セッション |
データ保持期間 | 最終起動から14日間 |
マウントパス | 設定可能(例: /mnt/workspace) |
セッション間の分離 | 完全分離(他セッションのデータにはアクセス不可) |
対応オペレーション | 通常ファイル、ディレクトリ、シンボリックリンク |
非対応 | ハードリンク、デバイスファイル、拡張属性(xattr) |
ストレージリセット条件 | 14日間未使用 または Runtimeバージョン更新時 |
利用可能リージョン | 東京含む14リージョン(パブリックプレビュー) |
ライフサイクルの動作

図2: セッションストレージのライフサイクル ── Stop/Resumeをまたいで状態が保持される
- 初回起動: 指定したマウントパスに空のディレクトリが作成される
- エージェント実行中: 書き込みは通常のファイルシステム操作と同じ。バックグラウンドで耐久性ストレージへ非同期レプリケーション
- セッション停止: マイクロVMが終了する際に未保存データをフラッシュ
- セッション再開: 新しいマイクロVMが起動し、同じストレージをマウント。コード・パッケージ・成果物がそのまま復元
エージェントから見れば、ただの /mnt/workspace ディレクトリです。永続化の仕組みは完全に透過的に動作します。
設定方法:実際のコード例
セッションストレージの有効化は、AgentCore Runtime の作成・更新時に filesystemConfigurations パラメータを追加するだけです。
import boto3
RUNTIME_ID = "your-agent-runtime-id"
client = boto3.client("bedrock-agentcore-control", region_name="ap-northeast-1")
# 既存のRuntime設定を取得
current = client.get_agent_runtime(agentRuntimeId=RUNTIME_ID)
# セッションストレージを有効化
response = client.update_agent_runtime(
agentRuntimeId=RUNTIME_ID,
agentRuntimeArtifact=current["agentRuntimeArtifact"],
roleArn=current["roleArn"],
networkConfiguration=current["networkConfiguration"],
filesystemConfigurations=[
{
"sessionStorage": {
"mountPath": "/mnt/workspace"
}
}
]
)
print(f"Status: {response['status']}")実践的なコーディングエージェントの実装例
セッションストレージを活用したコーディングエージェントの実装例です。会話履歴も /mnt/workspace に保存することで、Stop/Resume を挟んでもコンテキストが維持されます。
import os
os.environ["BYPASS_TOOL_CONSENT"] = "true"
from strands import Agent
from strands.session import FileSessionManager
from strands.models import BedrockModel
from strands_tools import file_read, file_write, shell
from bedrock_agentcore.runtime import BedrockAgentCoreApp
app = BedrockAgentCoreApp()
WORKSPACE = "/mnt/workspace"
model = BedrockModel(model_id="us.anthropic.claude-sonnet-4-20250514-v1:0")
tools = [file_read, file_write, shell]
@app.entrypoint
def handle_request(payload):
session_id = payload.get("session_id", "default")
# 会話履歴もワークスペースに保存(セッションストレージで自動永続化)
session_manager = FileSessionManager(
session_id=session_id,
storage_dir=f"{WORKSPACE}/.sessions"
)
agent = Agent(
model=model,
tools=tools,
session_manager=session_manager,
system_prompt="コーディングアシスタントです。プロジェクトファイルは /mnt/workspace にあります。"
)
response = agent(payload.get("prompt"))
return {"response": response.message["content"][0]["text"]}
if __name__ == "__main__":
app.run()Stop/Resumeサイクルの確認
import boto3, json
client = boto3.client("bedrock-agentcore", region_name="ap-northeast-1")
agent_arn = "arn:aws:bedrock-agentcore:ap-northeast-1:123456789012:agent-runtime/coding-agent"
session_id = "project-ragate-001-longterm-session-abc"
def invoke(prompt):
resp = client.invoke_agent_runtime(
agentRuntimeArn=agent_arn,
runtimeSessionId=session_id,
payload=json.dumps({"prompt": prompt, "session_id": "conv-001"}).encode()
)
return json.loads(b"".join(resp["response"]))["response"]
# 1回目: プロジェクトのセットアップ
invoke("/mnt/workspace に新しいPythonプロジェクトを作成して。Flask APIの雛形を作ってください。")
# セッションを停止(ファイルシステムは永続化される)
client.stop_runtime_session(
agentRuntimeArn=agent_arn,
runtimeSessionId=session_id
)
# 翌日、セッションを再開(前回のファイルがすべて残っている)
invoke("昨日作ったFlask APIにユーザー認証機能を追加してください。")
# エージェントは /mnt/workspace のファイルを見て、前回の作業を正確に把握できるユースケースまとめ
- コーディングエージェントの長期タスク: 大規模なコード生成・リファクタリングを複数セッションに分けて実行できます
- 依存パッケージの再インストール排除: pip install / npm install の結果を保持。起動時間も短縮
- 中間成果物の保持: ML特徴量エンジニアリングや前処理の中間ファイルを保存して途中から再開
- CI/CDとの組み合わせ: ビルド成果物やテスト結果を /mnt/workspace に出力して後続処理で参照
注意点・制限事項
- バージョン更新でリセット: Agent Runtime のバージョン更新でセッションストレージはクリアされます。重要なデータは外部に退避する設計が必要です
- 1GB制限: セッションあたり最大1GB。大きなMLモデルなどは収まらないこともあります
- 14日間ルール: 14日間起動されないセッションのデータは自動削除されます
- VPC利用時のS3アクセス: VPCモードを使う場合、セッションストレージの同期にS3へのアウトバウンドアクセスが必要です
- StopRuntimeSession後の待機: Stop完了を待ってからResumeしてください。即時再開すると未フラッシュデータが失われる可能性があります
まとめ
Amazon Bedrock AgentCore Runtime のマネージドセッションストレージは、AIエージェント開発における「状態の消失問題」を根本から解決するアップデートです。
- エージェント側コードの変更ゼロで永続化を実現
- コード・パッケージ・成果物・会話履歴をStop/Resumeをまたいで保持
- 1GB・14日間の制限内なら自動管理で運用コストも最小
- 東京リージョン含む14リージョンで利用可能(プレビュー)
「エージェントに長時間タスクを安心して任せる」ためのインフラとして、この機能は非常に重要な位置を占めます。私たちRagateでも、引き続きAgentCoreを活用したプロダクト開発を進めていきます。GAになったら本番活用を本格検討したいですね。
ぜひ東京リージョンでプレビューを試してみてください!















