@@ -92,6 +92,7 @@ function buildPreparedCliRunContext(params: {
9292 sessionEntry ?: PreparedCliRunContext [ "params" ] [ "sessionEntry" ] ;
9393 agentId ?: string ;
9494 backend ?: Partial < PreparedCliRunContext [ "preparedBackend" ] [ "backend" ] > ;
95+ preparedEnv ?: PreparedCliRunContext [ "preparedBackend" ] [ "env" ] ;
9596 resolveExecutionArgs ?: PreparedCliRunContext [ "backendResolved" ] [ "resolveExecutionArgs" ] ;
9697 config ?: PreparedCliRunContext [ "params" ] [ "config" ] ;
9798 mcpConfigHash ?: string ;
@@ -162,7 +163,7 @@ function buildPreparedCliRunContext(params: {
162163 } ,
163164 preparedBackend : {
164165 backend,
165- env : { } ,
166+ env : params . preparedEnv ?? { } ,
166167 ...( params . mcpConfigHash ? { mcpConfigHash : params . mcpConfigHash } : { } ) ,
167168 } ,
168169 reusableCliSession : { } ,
@@ -532,6 +533,35 @@ describe("runCliAgent spawn path", () => {
532533 expect ( requireArgAfter ( input . argv , "--effort" ) ) . toBe ( "high" ) ;
533534 } ) ;
534535
536+ it ( "passes prepared backend env to the spawned CLI process" , async ( ) => {
537+ mockSuccessfulCliRun ( ) ;
538+
539+ await executePreparedCliRun (
540+ buildPreparedCliRunContext ( {
541+ provider : "codex-cli" ,
542+ model : "gpt-5.5" ,
543+ runId : "run-prepared-env" ,
544+ backend : {
545+ env : {
546+ GEMINI_CLI_HOME : "/ignored/static-home" ,
547+ STATIC_BACKEND_FLAG : "set" ,
548+ } ,
549+ } ,
550+ preparedEnv : {
551+ GEMINI_CLI_HOME : "/tmp/openclaw-gemini-profile-home" ,
552+ GEMINI_CLI_SYSTEM_SETTINGS_PATH : "/tmp/openclaw-gemini-system-settings.json" ,
553+ } ,
554+ } ) ,
555+ ) ;
556+
557+ const input = mockCallArg ( supervisorSpawnMock ) as { env ?: Record < string , string > } ;
558+ expect ( input . env ?. STATIC_BACKEND_FLAG ) . toBe ( "set" ) ;
559+ expect ( input . env ?. GEMINI_CLI_HOME ) . toBe ( "/tmp/openclaw-gemini-profile-home" ) ;
560+ expect ( input . env ?. GEMINI_CLI_SYSTEM_SETTINGS_PATH ) . toBe (
561+ "/tmp/openclaw-gemini-system-settings.json" ,
562+ ) ;
563+ } ) ;
564+
535565 it ( "passes OpenClaw skills to Claude as a session plugin" , async ( ) => {
536566 const workspaceDir = await fs . mkdtemp ( path . join ( os . tmpdir ( ) , "openclaw-cli-skills-" ) ) ;
537567 const skillDir = path . join ( workspaceDir , "skills" , "weather" ) ;
0 commit comments