@@ -156,6 +156,7 @@ fn remote_arm_propagates_skills_into_skill_references() {
156156 "oz" ,
157157 "auto" ,
158158 & skills,
159+ None ,
159160 & agent_cfg ( ) ,
160161 )
161162 . expect ( "Remote+oz must convert" ) ;
@@ -167,6 +168,7 @@ fn remote_arm_propagates_skills_into_skill_references() {
167168 model_id,
168169 computer_use_enabled,
169170 title,
171+ auth_secret_name,
170172 } = mode
171173 else {
172174 panic ! ( "expected Remote start-agent mode" ) ;
@@ -178,6 +180,7 @@ fn remote_arm_propagates_skills_into_skill_references() {
178180 assert_eq ! ( model_id, "auto" ) ;
179181 assert ! ( computer_use_enabled) ;
180182 assert_eq ! ( title, "Child" ) ;
183+ assert_eq ! ( auth_secret_name, None ) ;
181184}
182185
183186#[ test]
@@ -191,6 +194,7 @@ fn remote_arm_with_empty_skills_propagates_empty_vec() {
191194 "claude" ,
192195 "auto" ,
193196 & [ ] ,
197+ None ,
194198 & agent_cfg ( ) ,
195199 )
196200 . expect ( "Remote+claude must convert" ) ;
@@ -214,12 +218,76 @@ fn remote_arm_rejects_opencode() {
214218 "opencode" ,
215219 "auto" ,
216220 & [ ] ,
221+ None ,
217222 & agent_cfg ( ) ,
218223 )
219224 . expect_err ( "Remote+opencode must be rejected" ) ;
220225 assert ! ( err. to_lowercase( ) . contains( "opencode" ) ) ;
221226}
222227
228+ #[ test]
229+ fn remote_arm_propagates_claude_auth_secret_into_mode ( ) {
230+ let mode = run_agents_to_start_agent_mode (
231+ & RunAgentsExecutionMode :: Remote {
232+ environment_id : "env-1" . to_string ( ) ,
233+ worker_host : "warp" . to_string ( ) ,
234+ computer_use_enabled : false ,
235+ } ,
236+ "claude" ,
237+ "auto" ,
238+ & [ ] ,
239+ Some ( "my-claude-key" ) ,
240+ & agent_cfg ( ) ,
241+ )
242+ . expect ( "Remote+claude must convert" ) ;
243+ let StartAgentExecutionMode :: Remote {
244+ auth_secret_name, ..
245+ } = mode
246+ else {
247+ panic ! ( "expected Remote start-agent mode" ) ;
248+ } ;
249+ assert_eq ! ( auth_secret_name. as_deref( ) , Some ( "my-claude-key" ) ) ;
250+ }
251+
252+ #[ test]
253+ fn remote_arm_filters_whitespace_auth_secret_name_to_none ( ) {
254+ let mode = run_agents_to_start_agent_mode (
255+ & RunAgentsExecutionMode :: Remote {
256+ environment_id : "env-1" . to_string ( ) ,
257+ worker_host : "warp" . to_string ( ) ,
258+ computer_use_enabled : false ,
259+ } ,
260+ "codex" ,
261+ "auto" ,
262+ & [ ] ,
263+ Some ( " " ) ,
264+ & agent_cfg ( ) ,
265+ )
266+ . expect ( "Remote+codex must convert" ) ;
267+ let StartAgentExecutionMode :: Remote {
268+ auth_secret_name, ..
269+ } = mode
270+ else {
271+ panic ! ( "expected Remote start-agent mode" ) ;
272+ } ;
273+ assert_eq ! ( auth_secret_name, None ) ;
274+ }
275+
276+ #[ test]
277+ fn local_arm_ignores_auth_secret_name ( ) {
278+ let mode = run_agents_to_start_agent_mode (
279+ & RunAgentsExecutionMode :: Local ,
280+ "claude" ,
281+ "auto" ,
282+ & [ ] ,
283+ Some ( "my-claude-key" ) ,
284+ & agent_cfg ( ) ,
285+ )
286+ . expect ( "Local+claude must convert" ) ;
287+ // Local children don't carry an auth_secret_name field.
288+ assert ! ( matches!( mode, StartAgentExecutionMode :: Local { .. } ) ) ;
289+ }
290+
223291#[ test]
224292fn should_show_agent_mode_ask_user_question_speedbump_defaults_to_true ( ) {
225293 App :: test ( ( ) , |mut app| async move {
0 commit comments