UNPKG

@morodomi/ait3

Version:

AIT³ Development Platform - AI + Ticket + Test + Tool driven development methodology

64 lines (63 loc) 2.05 kB
import { readFile, writeFile, access } from 'fs/promises'; /** * Install security settings to restrict dangerous commands * Updates existing .claude/settings.local.json file */ export async function installSecurity() { const settingsPath = '.claude/settings.local.json'; // Check if settings file exists (Claude Code must create it first) try { await access(settingsPath); } catch { return { success: false, message: 'settings.local.json not found. Please launch Claude Code first.' }; } try { // Read existing settings const content = await readFile(settingsPath, 'utf-8'); let settings; try { settings = JSON.parse(content); } catch { return { success: false, message: 'Failed to parse settings.local.json' }; } // Initialize permissions if not exists if (!settings.permissions) { settings.permissions = {}; } if (!settings.permissions.deny) { settings.permissions.deny = []; } // Security rules to add const securityDenyRules = [ 'Bash(curl:*)', 'Bash(wget:*)', 'Bash(rm:*)' ]; // Add rules without duplicates const existingDeny = new Set(settings.permissions.deny); for (const rule of securityDenyRules) { existingDeny.add(rule); } settings.permissions.deny = Array.from(existingDeny); // Write back with proper formatting await writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8'); return { success: true, message: 'Security settings applied to .claude/settings.local.json' }; } catch (error) { return { success: false, message: `Failed to update security settings: ${error instanceof Error ? error.message : 'Unknown error'}` }; } }