diff options
| author | tanaka takashi <isazaka@gmail.com> | 2026-08-10 01:39:40 +0900 |
|---|---|---|
| committer | tanaka takashi <isazaka@gmail.com> | 2026-08-10 01:39:40 +0900 |
| commit | 60d558e9a7eb1944fc58ee88e121a5db5248a332 (patch) | |
| tree | a459d0789e177247af68fbf65e65d326633280dd /doc/Design.md | |
| parent | 6394dfcc50fb1804ab07be309d940017eb11ef7d (diff) | |
fix(agent): fail fast on sandbox policy denial
Treat Policy Engine denials and UnauthorizedAccessException results as terminal tool failures by adding RetryAllowed metadata to ToolExecutionResult.
Stop the Agent loop immediately after recording the denied tool result, transition the Task to failed, and run normal Task resource cleanup instead of returning the same failure to the LLM for another iteration. Correctable validation and process failures retain the existing bounded retry behavior.
Expose RetryAllowed in llm.jsonl and document the fail-fast security invariant in Specifications, Design, and ImplementationPlan.
Tests: Agent.Core.Tests 50/50 passed with skip 0; Release build passed with 0 warnings and 0 errors. The full Windows suite remained environment-blocked outside an elevated token: 14 tests failed while creating/deriving the fixed AppContainer or creating symlinks; 11 passed and none were skipped.
Release: refreshed the win-x64 self-contained folder binaries, publish manifest, ZIP, and checksum while preserving the local agent.yaml. The clean ZIP contains no runtime logs or Task state.
Diffstat (limited to 'doc/Design.md')
| -rw-r--r-- | doc/Design.md | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/doc/Design.md b/doc/Design.md index 1bcbc99..693cdeb 100644 --- a/doc/Design.md +++ b/doc/Design.md @@ -317,7 +317,7 @@ Ollamaに公開するInternal Toolは次の5群に固定する。個々のOS com ``` PlannerがDAG、不変条件、completed immutable、max_tasksを再検査してから適用する。 ### 7.6 ToolUseGuard -Taskには `requires_external_effect` をPlanner内部属性として持たせる。trueのTaskで、当該iteration中のtool callが0かつ完了証拠がない場合、LLMへ「未実行」を示すsystem-generated observationを追加して再試行する。同一失敗fingerprintが5回に達したらTaskをfailedにする。 +Taskには `requires_external_effect` をPlanner内部属性として持たせる。trueのTaskで、当該iteration中のtool callが0かつ完了証拠がない場合、LLMへ「未実行」を示すsystem-generated observationを追加して再試行する。同一失敗fingerprintが5回に達したらTaskをfailedにする。ただし、Policy EngineのdenyおよびSandbox backendの`UnauthorizedAccessException`は`RetryAllowed=false`のterminal Tool resultへ変換する。Runtimeはobserverへ結果を1回記録した直後にTaskをfailedへ遷移させ、LLMへ再投入しない。 --- ## 8. Token Planner設計 ### 8.1 Task model |
