"use client"; import { useState } from "react"; import { Plus, X } from "lucide-react"; import { useChatStore } from "@/lib/store"; import { SettingRow, SectionHeader, Toggle } from "./SettingRow"; import { cn } from "@/lib/utils"; const TOOL_LABELS: Record = { file_read: { label: "File read", description: "Read files from the filesystem", }, file_write: { label: "File write", description: "Create or modify files", }, bash: { label: "Bash commands", description: "Execute shell commands", }, web_search: { label: "Web search", description: "Search the internet", }, }; export function PermissionSettings() { const { settings, updateSettings, resetSettings } = useChatStore(); const [newDir, setNewDir] = useState(""); function toggleAutoApprove(tool: string, value: boolean) { updateSettings({ permissions: { ...settings.permissions, autoApprove: { ...settings.permissions.autoApprove, [tool]: value }, }, }); } function addRestrictedDir() { const dir = newDir.trim(); if (!dir || settings.permissions.restrictedDirs.includes(dir)) return; updateSettings({ permissions: { ...settings.permissions, restrictedDirs: [...settings.permissions.restrictedDirs, dir], }, }); setNewDir(""); } function removeRestrictedDir(dir: string) { updateSettings({ permissions: { ...settings.permissions, restrictedDirs: settings.permissions.restrictedDirs.filter((d) => d !== dir), }, }); } return (
resetSettings("permissions")} />
Auto-approving tools means Claude can perform these actions without asking for confirmation. Use with caution.
{Object.entries(TOOL_LABELS).map(([tool, { label, description }]) => ( toggleAutoApprove(tool, v)} /> ))}
{settings.permissions.restrictedDirs.map((dir) => (
{dir}
))}
setNewDir(e.target.value)} onKeyDown={(e) => e.key === "Enter" && addRestrictedDir()} placeholder="/path/to/directory" className={cn( "flex-1 bg-surface-800 border border-surface-700 rounded-md px-3 py-1.5 text-xs", "text-surface-200 placeholder-surface-600 focus:outline-none focus:ring-1 focus:ring-brand-500 font-mono" )} />
); }