当前位置: 首页 > article >正文

ClaudeCode 中子 Agent 的权限机制

概述如果子 Agent 尝试使用未在allowed-tools中声明的工具或 Skill,会经历两层拦截,最终被拒绝执行:第一层拦截:工具集过滤(Tool Pool Filtering)子 Agent 启动时,resolveAgentTools()会根据allowed-tools白名单从availableTools中过滤出resolvedTools。不在白名单中的工具根本不会出现在子 Agent 的工具列表中。第二层拦截:权限规则检查(Permission Rules)子 Agent 的getAppState()会重写toolPermissionContext.alwaysAllowRules.session,将allowed-tools写入为 session 级别的 allow 规则。即使某个工具绕过了第一层过滤(比如 MCP tools),在调用时也会经过hasPermissionsToUseTool()的权限检查,发现不在 allow rules 中就会被拒绝。实际结果✅工具不在子 Agent 的工具列表中:Claude 模型看不到这些工具,无法调用✅即使 Claude 猜测调用:权限检查返回deny,执行被拦截✅Skill 同理:Skill 作为 Tool 注册,同样受 allowed-tools 白名单限制⚠️MCP Tools 例外:MCP tools 默认允许(tool.name.startsWith('mcp__')在 filterToolsForAgent 中直接 return true),不受 allowed-tools 限制✅但 MCP 可被 disallowed-tools 禁用:通过disallowedTools字段可显式禁止特定 MCP server完整代码路径 + 核心函数阶段 1:子 Agent 创建时的工具集过滤// 代码路径: /src/tools/AgentTool/agentToolUtils.ts// 核心函数: resolveAgentTools() L122-225// 调用时机: AgentTool.handler() 调用 runAgent() 前exportfunctionresolveAgentTools(agentDefinition:PickAgentDefinition,'tools'|'disallowedTools'|'source'|'permissionMode',availableTools:Tools,isAsync=false,isMainThread=false,):ResolvedAgentTools{const{tools:agentTools,disallowedTools,source,permissionMode}=agentDefinition// === 第一层过滤: filterToolsForAgent() ===// 移除所有 Agent 禁止的工具(AgentTool、SkillTool 等)constfilteredAvailableTools=isMainThread?availableTools// 主线程不过滤:filterToolsForAgent({tools:availableTools,isBuiltIn:source==='built-in',isAsync,permissionMode,})// === 第二层过滤: disallowedTools 黑名单 ===constdisallowedToolSet=newSet(disallowedTools?.map(toolSpec={const{toolName}=permissionRuleValueFromString(toolSpec)returntoolName})??[])constallowedAvailableTools=filteredAvailableTools.filter(tool=!disallowedToolSet.has(tool.name))// === 第三层过滤: allowed-tools 白名单 ===consthasWildcard=agentTools===undefined||(agentTools.length===1agentTools[0]==='*')if(hasWildcard){// 通配符: 返回所有过滤后的工具return{hasWildcard:true,validTools:[],invalidTools:[],resolvedTools:allowedAvailableTools}}// 构建工具名称映射constavailableToolMap=newMapstring,Tool()for(consttoolofallowedAvailableTools){availableToolMap.set(tool.name,tool)}

相关文章:

ClaudeCode 中子 Agent 的权限机制

概述 如果子 Agent 尝试使用未在 allowed-tools 中声明的工具或 Skill,会经历两层拦截,最终被拒绝执行: 第一层拦截:工具集过滤(Tool Pool Filtering) 子 Agent 启动时,resolveAgentTools() 会根据 allowed-tools 白名单从 availableTools 中过滤出 resolvedTools。不…...

qy2格式怎么转成MP3?7种方法一次讲清楚(附详细步骤)

很多人在使用 爱奇艺 下载音频或缓存内容时,可能会遇到一种比较少见的格式——QY2。这种格式属于平台专用的加密音频文件,主要用于版权保护,在官方APP内可以正常播放,但一旦导出到其他设备,就会出现无法识别、无法播放…...

OntoKG:Schema-First 知识图谱构建新范式

📌 一句话总结: 本工作提出 OntoKG,一种以本体(ontology)为核心的知识图谱构建框架,通过 intrinsic-relational routing 实现 schema-first 的结构化建模与下游可复用性。 🔍 背景问题&#x…...

SITS2026正式发布:5个被92%企业忽略的AIAgent部署关键指标(附Gartner验证清单)

第一章:SITS2026正式发布:AIAgent最佳实践指南 2026奇点智能技术大会(https://ml-summit.org) SITS2026(Smart Intelligent Task System 2026)是面向生产级AI Agent系统设计与落地的权威实践框架,由ML Summit联合Open…...

图像描述生成不再依赖大模型:2026奇点大会首发轻量化多模态对齐引擎(参数量<1.2B,BLEU-4提升21.6%)

第一章:2026奇点智能技术大会:图像描述生成 2026奇点智能技术大会(https://ml-summit.org) 本届大会首次设立“视觉语义协同”专项赛道,聚焦图像描述生成(Image Captioning)在多模态大模型驱动下的范式跃迁。与传统基…...

C语言分支与循环学习笔记

一、分支语句1. if 语句多分支:例题:判断奇偶数注意: 条件要用 比较,不要写成 (赋值)即使只有一条语句,也建议加 {},避免后面加语句时出错2. switch 语句适合同一个表达式与多个固…...

扩展异常对象的批量处理脚本

该PL/SQL脚本可自动识别扩展使用率≥95%的段对象(表、索引、分区等),并批量将其MAX_EXTENTS设置为UNLIMITED,解决“段无法扩展”的核心问题,避免手动逐个修改的低效与遗漏。 一、批量处理脚本 SET SERVEROUTPUT ON; DECLARE-- 定义变量:存储对象信息V_SEGMENT_NAME …...

Python 循环基础:for、while、break、continue

文章目录前言一、循环到底是干嘛的?先把逻辑搞明白二、for循环:Python里最常用的“批量工具”2.1 for循环基础语法2.2 最简单的for循环示例2.3 遍历字符串:for循环也能拆文字2.4 遍历字典:键、值、键值对全拿下2.5 for循环嵌套&am…...

大模型窗口越来越大,为什么 Agent 还是总会失控?

前端出身,跨进智能体这个坑已经有一段时间了。写这个系列,是想把自己摸索的过程留下来,不是教程,是记录。 很多刚开始接触 Agent 的人,都会有一个直觉: 现在模型的上下文窗口不是已经越来越大了吗&#x…...

应届生面试:3分钟搞定自我介绍

文章目录前言一、为什么应届生面试,自我介绍这么重要?1.1 面试官的真实目的:3秒筛选,3分钟定印象1.2 3分钟不是上限,是“黄金区间”1.3 2026年校招趋势:更看重“务实”,不看“空喊口号”二、90%…...

uniapp中uview组件库的NoticeBar滚动通知进阶配置与实战技巧

1. NoticeBar组件核心功能解析 滚动通知栏作为移动端高频使用的UI组件,在uniapp生态中通过uView的NoticeBar实现了开箱即用的解决方案。这个看似简单的组件实际上隐藏着不少值得深挖的特性。先说说它的基础能力:支持水平和垂直两种滚动模式,水…...

Springboot常见内存溢出与线程报错分析

Springboot内存溢出与线程报错分析 Spring Boot 应用在生产环境中常见的内存溢出(OOM)和线程相关报错,主要源于 JVM 内存模型、线程模型与应用代码/配置的交互。以下是系统性整理:一、常见 内存溢出(OutOfMemoryError&…...

Kotlin密封类实战指南:如何优雅地处理受限类层次结构

1. 密封类是什么?为什么你需要它 第一次看到Kotlin的密封类时,我也有点懵——这不就是个加强版的枚举吗?直到在一个电商项目中踩了坑才恍然大悟。想象你正在开发一个订单状态系统:订单可能是"待支付"、"已发货&quo…...

SQL触发器定义在不同版本间的兼容性_使用标准SQL语法编写

MySQL 5.7与8.0的CREATE TRIGGER差异主要在DEFINER权限处理、严格模式对非法数据的中断行为;PostgreSQL强制函数绑定且返回TRIGGER;SQL Server的INSTEAD OF需手动处理伪表;各数据库触发器语法均不兼容ANSI标准。MySQL 5.7 和 8.0 的 CREATE T…...

CSS 毛玻璃效果:从基础实现到高级应用

1. 毛玻璃效果基础实现 毛玻璃效果(Frosted Glass Effect)是近年来网页设计中非常流行的一种视觉效果,它能让界面元素呈现出半透明的磨砂质感,就像我们常见的磨砂玻璃一样。这种效果最大的特点就是既能保持背景内容的可见性&#…...

ShardingSphere 5.2.1 启动报错 SPI-00001?别慌,试试降级到 5.1.1 的完整避坑指南

ShardingSphere 5.2.1 启动报错 SPI-00001 的深度解决方案与版本选择策略 最近在技术社区看到不少开发者反馈,在使用 ShardingSphere 5.2.1 版本时遇到了一个棘手的启动错误:SPI-00001: No implementation class load from SPI。这个错误看似简单&#x…...

基于LLM的高校招生智能问答系统

一、 研究目的 本研究旨在利用大语言模型(LLM)强大的自然语言理解与生成能力,解决当前高校招生咨询工作中存在的痛点与瓶颈。随着高等教育普及化程度的加深,每年招生季高校需面对海量、重复且时效性极强的咨询需求。传统的人工客服模式受限于人力成本、工作时间及答复一致…...

从NeRF到ConvONet:手把手教你用Python和PyTorch搭建自己的三维重建模型(附代码)

从NeRF到ConvONet:手把手教你用Python和PyTorch搭建自己的三维重建模型(附代码) 三维重建技术正在彻底改变我们与数字世界的交互方式。想象一下,仅凭几张照片就能重建出精细的3D模型,或者通过简单的视频输入实时生成三…...

从入门到精通:Java 编程语言全解析 —— 夯实编程基础,开启开发之旅

从入门到精通:Java 编程语言全解析 —— 夯实编程基础,开启开发之旅 在编程世界里,Java 凭借其跨平台、安全稳定、生态完善的优势,稳居主流编程语言榜首数十年。无论是桌面应用、后端开发、移动安卓程序,还是大数据、云…...

分析和存储日志知识点问答

1.RHEL日志文件保存在哪个目录中? 保存在/var/log目录下。 2.什么是syslog消息和非syslog消息? syslog消息是格式标准统一的日志,非syslog消息是各个程序自己定义的格式标准不统一的日志。 3.哪两个服务处理RHEL中的syslog消息? s…...

BGE Reranker-v2-m3部署案例:离线考试阅卷系统中实现主观题参考答案语义匹配

BGE Reranker-v2-m3部署案例:离线考试阅卷系统中实现主观题参考答案语义匹配 1. 项目背景与需求场景 在传统的考试阅卷系统中,主观题评分一直是个让人头疼的问题。特别是像简答题、论述题这类题目,学生的答案五花八门,但表达的意…...

绿色机器学习系统综述:(四)讨论、未来方向与结论

摘要 本文是对发表在《Artificial Intelligence Review》期刊上的论文"A systematic review of Green Machine Learning: practices and challenges for sustainability"的文献精读第四篇,也是本系列的最后一篇。该论文由Samara Santos、Andr L. C. Otto…...

MySQL触发器实战避坑指南:如何巧妙绕过错误1442的陷阱

1. 为什么你的MySQL触发器会报错1442? 最近在帮朋友排查一个MySQL数据库问题时,遇到了经典的错误1442。当时他正在开发一个员工考勤系统,触发器里写着:"当员工状态更新为离职时,自动删除一年前的旧记录"。听…...

【YOLO11性能跃迁】MSCAA注意力模块实战:从理论到代码,打造高效目标检测新范式

1. MSCAA模块:目标检测领域的注意力新范式 如果你正在使用YOLO系列做目标检测,一定遇到过小目标漏检、复杂背景干扰这些头疼问题。传统卷积神经网络就像拿着固定放大镜找东西,而MSCAA模块给检测器装上了"智能变焦镜头"。这个源自语…...

Qwen3-ASR-0.6B企业级应用:呼叫中心1000路并发语音转写架构

Qwen3-ASR-0.6B企业级应用:呼叫中心1000路并发语音转写架构 1. 呼叫中心语音转写的挑战与机遇 现代呼叫中心每天处理成千上万的客户通话,这些海量语音数据蕴含着宝贵的商业价值。但传统语音转写方案面临三大痛点:处理速度慢导致响应延迟、并…...

算法训练营第二天

题目链接 https://leetcode.cn/problems/binary-search/ 视频链接 https://www.bilibili.com/video/BV1fA4y1o715 刚看到题目,感觉今天的有点难哦! 心得体会:难不重要,进步最重要!加油!!...

执行报错时如何利用分析数据库慢查询排查_SQL语法纠错技巧

%开头的LIKE无法走索引,导致全表扫描;应改用LIKE abc%、函数索引、全文索引或ES;列名错误多因大小写、反引号缺失或别名作用域问题;GROUP BY报错源于ONLY_FULL_GROUP_BY模式,需合规改写SQL。MySQL 慢查询日志里看到 SE…...

Flink技术实践-FlinkSQL Join技术全解

一、背景介绍在离线批处理场景中,编写一个 Join SQL 是再平常不过的操作——两张有限的数据集,在某个键上关联,输出结果。但当你把这套 SQL 语义移植到实时流处理场景时,一切都变了。特性批处理 Join流处理 Join数据特征有限、静态…...

如何快速为旧iPhone降级:Legacy-iOS-Kit完整使用指南

如何快速为旧iPhone降级:Legacy-iOS-Kit完整使用指南 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit 你…...

统计子矩阵 前缀和 滑动窗口

统计子矩阵 问题描述 给定一个 NMN \times MNM 的矩阵 AAA,统计有多少个子矩阵(最小 111 \times 111,最大 NMN \times MNM)满足子矩阵中所有数的和不超过给定的整数 KKK。 输入格式 第一行包含三个整数 NNN, MMM 和 KKK。 之后…...