Skip to the content.

Task 26 — Least-privilege grants

Phase: 2 Status: done Owner: — Slug: least-privilege-grants

Goal

Навык получает только объявленные capabilities. Runtime проверяет grant при вызове; импорт навыка не может тихо расширить разрешения.

Acceptance criteria

Sub-tasks

Implementation notes

2026-08-12

Добавлено:

src/agent/Tools/Grants/ — 4 новых файла:

src/agent/Config/AppConfig.cs — LeastPrivilegeConfig:

src/agent/Tools/Policy/ToolPolicy.cs — PolicyContext.SkillId (nullable string)

src/agent/Tools/Policy/ToolPolicyEngine.cs — интеграция:

src/agent/Skills/SkillPackager.cs — интеграция grant validation:

src/agent/Agent/AgentCore.cs — передача SkillId в PolicyContext:

src/agent/Hercules.WebApi/Controllers/GrantsController.cs — 5 endpoints:

DI (CLI + WebAPI): LeastPrivilegeConfig, SkillGrantStore, ISkillGrantService → SkillGrantService; ToolPolicyEngine получает ISkillGrantService

Tests: tests/.../Tools/Grants/SkillGrantServiceTests.cs — 14 тестов

Validation:

Scope / Likely files

src/agent/Tools/Grants/, src/agent/Skills/

Dependencies

Risks / Rollback

Обратная совместимость со старыми навыками; миграционный режим.