feat: add default permission mode + rename accept→edit
- Add "default" permission mode: no flags passed to CC, uses its own built-in default (asks about everything). Now the system default. - Rename "accept" alias to "edit" (acceptEdits) for clarity - Remove "skip" alias (duplicate of "bypass") - Update all help text, error messages, tests, and LLM prompts Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
9c04d47c8e
commit
b707fa84f9
+21
-18
@@ -20,14 +20,15 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
# Permission mode aliases (user-facing shorthand → internal CC mode)
|
||||
_PERM_ALIASES: dict[str, str] = {
|
||||
"bypass": "bypassPermissions",
|
||||
"skip": "bypassPermissions",
|
||||
"accept": "acceptEdits",
|
||||
"plan": "plan",
|
||||
"bypass": "bypassPermissions",
|
||||
"default": "default",
|
||||
"edit": "acceptEdits",
|
||||
"plan": "plan",
|
||||
}
|
||||
_PERM_LABELS: dict[str, str] = {
|
||||
"default": "default",
|
||||
"bypassPermissions": "bypass",
|
||||
"acceptEdits": "accept",
|
||||
"acceptEdits": "edit",
|
||||
"plan": "plan",
|
||||
}
|
||||
|
||||
@@ -113,14 +114,14 @@ async def handle_command(user_id: str, text: str) -> Optional[str]:
|
||||
async def _cmd_new(user_id: str, args: str) -> str:
|
||||
"""Create a new session."""
|
||||
if not args:
|
||||
return "Usage: /new <project_dir> [initial_message] [--timeout N] [--perm MODE]\nModes: bypass (default), accept, plan"
|
||||
return "Usage: /new <project_dir> [initial_message] [--timeout N] [--perm MODE]\nModes: default, edit, plan, bypass"
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("working_dir", nargs="?", help="Project directory")
|
||||
parser.add_argument("rest", nargs="*", help="Initial message")
|
||||
parser.add_argument("--timeout", type=int, default=None, help="CC timeout in seconds")
|
||||
parser.add_argument("--idle", type=int, default=None, help="Idle timeout in seconds")
|
||||
parser.add_argument("--perm", default=None, help="Permission mode: bypass, accept, plan")
|
||||
parser.add_argument("--perm", default=None, help="Permission mode: default, edit, plan, bypass")
|
||||
|
||||
try:
|
||||
parsed = parser.parse_args(args.split())
|
||||
@@ -132,7 +133,7 @@ async def _cmd_new(user_id: str, args: str) -> str:
|
||||
|
||||
permission_mode = _resolve_perm(parsed.perm) if parsed.perm else DEFAULT_PERMISSION_MODE
|
||||
if permission_mode is None:
|
||||
return f"Invalid --perm. Valid modes: bypass, accept, plan"
|
||||
return f"Invalid --perm. Valid modes: default, edit, plan, bypass"
|
||||
|
||||
working_dir = parsed.working_dir
|
||||
initial_msg = " ".join(parsed.rest) if parsed.rest else None
|
||||
@@ -288,10 +289,11 @@ async def _cmd_perm(user_id: str, args: str) -> str:
|
||||
if not parts:
|
||||
return (
|
||||
"Usage: /perm <mode> [conv_id]\n"
|
||||
"Modes: bypass (default), accept, plan\n"
|
||||
" bypass — skip all permission checks\n"
|
||||
" accept — auto-accept file edits, confirm shell commands\n"
|
||||
" plan — plan only, no writes"
|
||||
"Modes: default, edit, plan, bypass\n"
|
||||
" default — default mode\n"
|
||||
" edit — auto-accept file edits, confirm shell commands\n"
|
||||
" plan — plan only, no writes\n"
|
||||
" bypass — skip all permission checks"
|
||||
)
|
||||
|
||||
alias = parts[0]
|
||||
@@ -299,7 +301,7 @@ async def _cmd_perm(user_id: str, args: str) -> str:
|
||||
|
||||
permission_mode = _resolve_perm(alias)
|
||||
if permission_mode is None:
|
||||
return f"Unknown mode '{alias}'. Valid: bypass, accept, plan"
|
||||
return f"Unknown mode '{alias}'. Valid: default, edit, plan, bypass"
|
||||
|
||||
if not conv_id:
|
||||
return "No active session. Use `//perm <mode> <conv_id>` or activate a session first."
|
||||
@@ -442,7 +444,7 @@ def _cmd_help() -> str:
|
||||
{P}status - Show sessions and current mode
|
||||
{P}close [n] - Close session (active or by number)
|
||||
{P}switch <n> - Switch to session by number
|
||||
{P}perm <mode> [conv_id] - Set permission mode (bypass/accept/plan)
|
||||
{P}perm <mode> [conv_id] - Set permission mode (default/edit/plan/bypass)
|
||||
{P}direct - Direct mode: messages → Claude Code (no LLM overhead)
|
||||
{P}smart - Smart mode: messages → LLM routing (default)
|
||||
{P}shell <cmd> - Run shell command (bypasses LLM)
|
||||
@@ -454,9 +456,10 @@ def _cmd_help() -> str:
|
||||
{P}help - Show this help
|
||||
|
||||
**Permission modes** (used by {P}perm and {P}new --perm):
|
||||
bypass — 跳过所有权限确认,CC 自动执行一切操作(默认)
|
||||
适合:受信任的沙盒环境、自动化任务
|
||||
accept — 自动接受文件编辑,但 shell 命令仍需手动确认
|
||||
default — 默认模式,遇到文件编辑操作时手动确认
|
||||
edit — 自动接受文件编辑,但 shell 命令仍需手动确认
|
||||
适合:日常开发,需要对命令执行保持控制
|
||||
plan — 只规划、不执行任何写操作
|
||||
适合:先预览 CC 的操作计划再决定是否执行"""
|
||||
适合:先预览 CC 的操作计划再决定是否执行
|
||||
bypass — 跳过所有权限确认,CC 自动执行一切操作
|
||||
适合:受信任的沙盒环境、自动化任务"""
|
||||
Reference in New Issue
Block a user