@@ -41,6 +41,7 @@ function parseArgs() {
4141 sessionId : null ,
4242 budget : null ,
4343 fresh : false ,
44+ skipPermissions : false ,
4445 logPath : null ,
4546 maxConsecutiveFailures : parseInt (
4647 process . env . AGENT_MAX_CONSECUTIVE_FAILURES || "3" ,
@@ -78,6 +79,15 @@ function parseArgs() {
7879 case "--fresh" :
7980 parsed . fresh = true ;
8081 break ;
82+ case "--skip-permissions" :
83+ if ( process . env . LARAVEL_SAIL !== "1" ) {
84+ console . error (
85+ `${ color . red } Error: --skip-permissions requires LARAVEL_SAIL=1 (Sail container).${ color . reset } ` ,
86+ ) ;
87+ process . exit ( 1 ) ;
88+ }
89+ parsed . skipPermissions = true ;
90+ break ;
8191 case "--log-path" :
8292 parsed . logPath = args [ ++ i ] ;
8393 break ;
@@ -314,10 +324,14 @@ function buildClaudeArgs(config, prompt, iteration) {
314324 "--verbose" ,
315325 "--output-format" ,
316326 "stream-json" ,
317- "--permission-mode" ,
318- config . permissionMode ,
319327 ] ;
320328
329+ if ( config . skipPermissions ) {
330+ commonArgs . push ( "--dangerously-skip-permissions" ) ;
331+ } else {
332+ commonArgs . push ( "--permission-mode" , config . permissionMode ) ;
333+ }
334+
321335 if ( config . model ) {
322336 commonArgs . push ( "--model" , config . model ) ;
323337 }
@@ -383,6 +397,9 @@ async function main() {
383397 console . log (
384398 `${ color . bold } ${ color . blue } ║ Resume: ${ resumeMode ? "enabled" : "disabled" } ${ color . reset } ` ,
385399 ) ;
400+ console . log (
401+ `${ color . bold } ${ color . blue } ║ Skip permissions: ${ config . skipPermissions ? "yes" : "no" } ${ color . reset } ` ,
402+ ) ;
386403 console . log (
387404 `${ color . bold } ${ color . blue } ║ Log: ${ logger . path } ${ color . reset } ` ,
388405 ) ;
@@ -393,7 +410,7 @@ async function main() {
393410
394411 logger . info ( `Starting ralph loop: ${ config . name } ` ) ;
395412 logger . info ( `Iterations: ${ config . iterations } ` ) ;
396- logger . info ( `Permission mode: ${ config . permissionMode } ` ) ;
413+ logger . info ( `Permissions: ${ config . skipPermissions ? "skipped (dangerously)" : `mode= ${ config . permissionMode } ` } ` ) ;
397414 logger . info ( `Model: ${ config . model || "default" } ` ) ;
398415 logger . info ( `Session ID: ${ config . sessionId || "none" } ` ) ;
399416 logger . info ( `Resume: ${ resumeMode ? "enabled" : "disabled" } ` ) ;
@@ -447,7 +464,12 @@ async function main() {
447464 ) ;
448465 logger . info ( "Retrying iteration as fresh invocation" ) ;
449466
450- const freshArgs = [ "-p" , fullPrompt , "--verbose" , "--output-format" , "stream-json" , "--permission-mode" , config . permissionMode ] ;
467+ const freshArgs = [ "-p" , fullPrompt , "--verbose" , "--output-format" , "stream-json" ] ;
468+ if ( config . skipPermissions ) {
469+ freshArgs . push ( "--dangerously-skip-permissions" ) ;
470+ } else {
471+ freshArgs . push ( "--permission-mode" , config . permissionMode ) ;
472+ }
451473 if ( config . model ) freshArgs . push ( "--model" , config . model ) ;
452474 if ( config . budget ) freshArgs . push ( "--max-budget-usd" , config . budget ) ;
453475
0 commit comments