首页 教程 常见问题

13.12 Agent SDK 权限配置

在 Agent SDK 中实现权限控制——限制代理的操作范围和安全边界。

权限模型

与 Claude Code 不同,Agent SDK 中的权限完全由你自行实现:

实现权限检查

class PermissionChecker:
    def __init__(self, allowed_paths, allowed_commands):
        self.allowed_paths = set(allowed_paths)
        self.allowed_commands = set(allowed_commands)

    def can_read(self, path):
        """检查是否可以读取文件。"""
        return any(
            path.startswith(allowed)
            for allowed in self.allowed_paths
        )

    def can_write(self, path):
        """检查是否可以写入文件。"""
        return self.can_read(path)

    def can_execute(self, command):
        """检查是否可以执行命令。"""
        cmd = command.split()[0]
        return cmd in self.allowed_commands

# 使用
perms = PermissionChecker(
    allowed_paths=["/home/user/project"],
    allowed_commands=["ls", "cat", "grep", "python", "pytest"]
)

def safe_execute_tool(tool_name, **kwargs):
    if tool_name == "read_file":
        if not perms.can_read(kwargs["path"]):
            return "错误:无权访问该文件"
        # 读取文件
    elif tool_name == "run_command":
        if not perms.can_execute(kwargs["command"]):
            return f"错误:不允许执行命令 {kwargs['command']}"
        # 执行命令

下一步