From ae0b117c64448e861bbb8f52cf605e453d73c2ea Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Thu, 17 Sep 2026 15:47:17 -0700 Subject: [PATCH] Honor explicit host consent policy in nag fighter --- slab/captutor/bin/nag-fighter.mjs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/slab/captutor/bin/nag-fighter.mjs b/slab/captutor/bin/nag-fighter.mjs index e00cd4470a..a02ffb840d 100644 --- a/slab/captutor/bin/nag-fighter.mjs +++ b/slab/captutor/bin/nag-fighter.mjs @@ -4,13 +4,14 @@ import {existsSync,mkdirSync,writeFileSync,renameSync} from 'node:fs'; import {homedir} from 'node:os'; import {join} from 'node:path'; import {setTimeout as sleep} from 'node:timers/promises'; -import {createModalPolice} from '../lib/modal-police.mjs'; +import {createModalPolice,approvedDebuggingPolicy} from '../lib/modal-police.mjs'; const directory=join(homedir(),'.local/share/captutor/nag-fighter'); const stageState=join(homedir(),'.local/share/captutor/stage-mode.json'); const statePath=join(directory,'status.json'); mkdirSync(directory,{recursive:true}); const status=data=>{const tmp=statePath+'.tmp';writeFileSync(tmp,JSON.stringify({pid:process.pid,at:new Date().toISOString(),...data},null,2));renameSync(tmp,statePath);}; -const police=createModalPolice({directory,allowRemoteDebugging:false}); +const allowRemoteDebugging=approvedDebuggingPolicy(); +const police=createModalPolice({directory,allowRemoteDebugging}); const controller=new AbortController(); for(const signal of ['SIGTERM','SIGINT'])process.on(signal,()=>controller.abort()); do { @@ -18,7 +19,7 @@ do { if(existsSync(stageState))status({phase:'stage-owned'}); else { // Recheck ownership immediately before any action: a take can begin during AX scan. - const result=await police.check('preparing',{mayHandle:()=>!existsSync(stageState)&&!controller.signal.aborted}); + const result=await police.check(allowRemoteDebugging?'connecting':'preparing',{mayHandle:()=>!existsSync(stageState)&&!controller.signal.aborted}); status({phase:'watching',...result}); } } catch(error) {status({phase:'blocked',error:error.stderr?.trim()||error.message});} -- 2.51.2