@@ -165,6 +165,42 @@ describe("acp permissions", () => {
165165 expect ( harness . replies ) . toEqual ( [ { requestID : "perm_1" , reply : "once" , directory : "/workspace" } ] )
166166 } )
167167
168+ it ( "forwards external_directory metadata and locations to requestPermission" , async ( ) => {
169+ const harness = createHarness ( )
170+ await createSession ( harness . session , "ses_a" )
171+
172+ harness . subscription . handle (
173+ permissionAsked ( "ses_a" , "perm_external" , {
174+ permission : "external_directory" ,
175+ metadata : {
176+ command : "mkdir -p /tmp/outside" ,
177+ description : "Create external directory" ,
178+ directories : [ "/tmp/outside" ] ,
179+ patterns : [ "/tmp/outside/*" ] ,
180+ } ,
181+ tool : { messageID : "msg_1" , callID : "call_1" } ,
182+ } ) ,
183+ )
184+
185+ await pollUntil ( ( ) => harness . replies . length === 1 , "external_directory permission was never replied" )
186+
187+ expect ( harness . requests [ 0 ] ) . toMatchObject ( {
188+ sessionId : "ses_a" ,
189+ toolCall : {
190+ toolCallId : "call_1" ,
191+ status : "pending" ,
192+ title : "external_directory" ,
193+ rawInput : {
194+ command : "mkdir -p /tmp/outside" ,
195+ description : "Create external directory" ,
196+ directories : [ "/tmp/outside" ] ,
197+ patterns : [ "/tmp/outside/*" ] ,
198+ } ,
199+ locations : [ { path : "/tmp/outside" } ] ,
200+ } ,
201+ } )
202+ } )
203+
168204 it ( "rejects non-selected outcomes" , async ( ) => {
169205 const harness = createHarness ( ( ) => Promise . resolve ( { outcome : { outcome : "cancelled" } } ) )
170206 await createSession ( harness . session , "ses_a" )
0 commit comments