claw-code permissionSetup 비교 반영: 위험 자동허용 가드 + 회귀 테스트 추가
Some checks failed
Release Gate / gate (push) Has been cancelled
Some checks failed
Release Gate / gate (push) Has been cancelled
- 전역 권한이 Auto일 때 고위험 도구(process, spawn_agent, snippet_runner)는 자동 허용을 ask로 강등 - AgentContext 권한 계산 경로에 dangerous auto guard를 통합하여 우발적 무승인 실행 방지 - OperationModePolicyTests에 guard 동작 회귀 테스트 2건 추가 - 패리티 문서에 permissionSetup 기반 보강 항목 추가 - 로드맵/패리티 문서 테스트 수치 동기화: 374/374 - 검증: dotnet build 경고0 오류0, ParityBenchmark 12/12, ReplayStability 12/12, 전체 테스트 374/374
This commit is contained in:
@@ -102,4 +102,40 @@ public class OperationModePolicyTests
|
||||
allowed.Should().BeTrue();
|
||||
askCalled.Should().BeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AgentContext_GetEffectiveToolPermission_DowngradesDangerousAutoToolWhenGlobalAuto()
|
||||
{
|
||||
var context = new AgentContext
|
||||
{
|
||||
Permission = "Auto",
|
||||
ToolPermissions = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
["process"] = "auto",
|
||||
}
|
||||
};
|
||||
|
||||
context.GetEffectiveToolPermission("process", "git status").Should().Be("ask");
|
||||
context.GetEffectiveToolPermission("file_read", @"E:\work\README.md").Should().Be("Auto");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task AgentContext_CheckToolPermissionAsync_DangerousAutoToolRequiresPromptInGlobalAuto()
|
||||
{
|
||||
var askCalled = false;
|
||||
var context = new AgentContext
|
||||
{
|
||||
OperationMode = OperationModePolicy.ExternalMode,
|
||||
Permission = "Auto",
|
||||
AskPermission = (_, _) =>
|
||||
{
|
||||
askCalled = true;
|
||||
return Task.FromResult(false);
|
||||
}
|
||||
};
|
||||
|
||||
var allowed = await context.CheckToolPermissionAsync("process", "git status");
|
||||
allowed.Should().BeFalse();
|
||||
askCalled.Should().BeTrue();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user