Control and observability
Configure permissions
Configure permissions 这一页讲的,就是 Configure permissions 这件事在 Claude Code 里到底怎么用。
页面信息
这页不是官方原文,而是顺着官方文档结构做的中文解释版。命令、参数、配置名这些硬东西尽量保留,解释部分则尽量讲成人能照着做的话。
如果你碰到特别敏感的配置、权限或企业环境差异,最好顺手点上面的“查看原始文档”再核一遍。
这一页先讲明白
这页主要讲 Configure permissions:Control how your agent uses tools with permission modes, hooks, and declarative allow/deny rules.
你可以把它当成"Control and observability"这块里专门管这一摊事的说明书。
你可以把"Configure permissions"理解成 Control and observability 这一栏里的一把专门工具。这页不是让你背书,而是教你什么时候该把这把工具拿出来。
原文这页大多会按 How permissions are evaluated、Allow and deny rules、Permission modes、Available modes 这些环节往下讲。
翻成人话,大概就是:How permissions are evaluated
第一,先别一上来全开全配。先按最小一步试通,确认没跑偏,再继续往下加。
第二,命令、配置名、参数名这些硬东西尽量保留原样。人话解释是帮你听懂,不是帮你改关键字。
第三,照着原文这几个环节挨个过:How permissions are evaluated -> Allow and deny rules -> Permission modes -> Available modes。像下地先看水路、再试机器、再正式开干,一步一步最稳。
原页关键片段:Allow and deny rules
"Allow and deny rules"这一段里最要紧的原始写法在下面,先看它怎么落地。
const options = {
allowedTools: ["Read", "Glob", "Grep"],
permissionMode: "dontAsk"
}; 原页关键片段:Set permission mode 1
下面这块是这一段最值钱的原文样板,先对着看一眼。
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="Help me refactor this code",
options=ClaudeAgentOptions(
permission_mode="default", # Set the mode here
),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main()) 原页关键片段:Set permission mode 2
下面这块是这一段最值钱的原文样板,先对着看一眼。
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions
async def main():
async with ClaudeSDKClient(
options=ClaudeAgentOptions(
permission_mode="default", # Start in default mode
)
) as client:
await client.query("Help me refactor this code")
# Change mode dynamically mid-session
await client.set_permission_mode("acceptEdits")
# Process messages with the new permission mode
async for message in client.receive_response():
if hasattr(message, "result"):
print(message.result)
asyncio.run(main()) Documentation Index
这里不是让你背"Documentation Index"这个词,而是让你看它真干活时怎么使。
这里还牵扯作用域,意思就是这条规则到底管当前项目、你个人,还是只管这一趟会话。
How permissions are evaluated
这一段更像在讲判断条件,什么时候该上,什么时候先别急。把触发条件看清,比背标题更重要。
看这段时要特别盯工具和权限边界,别为了省事一把全开。
Allow and deny rules
这一块主要是在说"Allow and deny rules"真到手上该怎么用,哪里最容易踩坑。
这里还牵扯作用域,意思就是这条规则到底管当前项目、你个人,还是只管这一趟会话。
Allow and deny rules
"Allow and deny rules"这一段里最要紧的原始写法在下面,先看它怎么落地。
const options = {
allowedTools: ["Read", "Glob", "Grep"],
permissionMode: "dontAsk"
}; Permission modes
这一块主要是在说"Permission modes"真到手上该怎么用,哪里最容易踩坑。
这里还牵扯作用域,意思就是这条规则到底管当前项目、你个人,还是只管这一趟会话。
Available modes
这一段不只是挂个标题,它是在说明"Available modes"这一块到底负责什么。
看这段时要特别盯工具和权限边界,别为了省事一把全开。
Set permission mode
这里不是让你背"Set permission mode"这个词,而是让你看它真干活时怎么使。
这里还牵扯作用域,意思就是这条规则到底管当前项目、你个人,还是只管这一趟会话。
Set permission mode 1
下面这块是这一段最值钱的原文样板,先对着看一眼。
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="Help me refactor this code",
options=ClaudeAgentOptions(
permission_mode="default", # Set the mode here
),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main()) Set permission mode 2
下面这块是这一段最值钱的原文样板,先对着看一眼。
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions
async def main():
async with ClaudeSDKClient(
options=ClaudeAgentOptions(
permission_mode="default", # Start in default mode
)
) as client:
await client.query("Help me refactor this code")
# Change mode dynamically mid-session
await client.set_permission_mode("acceptEdits")
# Process messages with the new permission mode
async for message in client.receive_response():
if hasattr(message, "result"):
print(message.result)
asyncio.run(main()) Mode details
看到这里,就把"Mode details"当成一件真要上手的活来看。
这里还牵扯作用域,意思就是这条规则到底管当前项目、你个人,还是只管这一趟会话。
Related resources
这一段主要是在把"Related resources"讲实,不是只摆个标题给你看。
这里还牵扯作用域,意思就是这条规则到底管当前项目、你个人,还是只管这一趟会话。
照着做一遍
如果你不想来回翻,就先照这几步顺着做。
每做完一步就看一下结果,再决定要不要继续往下。
第 1 步:Allow and deny rules
"Allow and deny rules"这一段里最要紧的原始写法在下面,先看它怎么落地。
const options = {
allowedTools: ["Read", "Glob", "Grep"],
permissionMode: "dontAsk"
}; 第 2 步:Set permission mode 1
下面这块是这一段最值钱的原文样板,先对着看一眼。
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="Help me refactor this code",
options=ClaudeAgentOptions(
permission_mode="default", # Set the mode here
),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main()) 第 3 步:Set permission mode 2
下面这块是这一段最值钱的原文样板,先对着看一眼。
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions
async def main():
async with ClaudeSDKClient(
options=ClaudeAgentOptions(
permission_mode="default", # Start in default mode
)
) as client:
await client.query("Help me refactor this code")
# Change mode dynamically mid-session
await client.set_permission_mode("acceptEdits")
# Process messages with the new permission mode
async for message in client.receive_response():
if hasattr(message, "result"):
print(message.result)
asyncio.run(main()) 一眼看懂这一页
先把这页到底在讲什么看明白,再去碰具体命令和配置,最不容易绕晕。
Configure permissions
|
v
这是 Control and observability 里的一摊要紧活
|
v
先弄懂,再下手 文末提醒
这站会按官方 docs 的导航和内容变化继续重生成,原站加页、删页、改页时,这里会跟着更新。
人话解释会尽量顺着原页往下讲,但命令、参数名、配置名这些硬东西还是保留原样,免得你抄过去跑不起来。