diff --git a/src/main/services/team/TeamProvisioningService.ts b/src/main/services/team/TeamProvisioningService.ts index 1293c686..cb13b9bb 100644 --- a/src/main/services/team/TeamProvisioningService.ts +++ b/src/main/services/team/TeamProvisioningService.ts @@ -4453,10 +4453,13 @@ export class TeamProvisioningService { ): Promise> { const resolvedPrimaryProviderId = resolveTeamProviderId(primaryProviderId); const needsCodexTurnSettledEnv = memberSpecs.some((member) => { - const memberProviderId = resolveTeamProviderId( - normalizeTeamMemberProviderId(member.providerId) ?? resolvedPrimaryProviderId + const configuredProviderId = normalizeTeamMemberProviderId(member.providerId); + const inferredProviderId = inferTeamProviderIdFromModel(member.model); + return ( + resolvedPrimaryProviderId === 'codex' || + configuredProviderId === 'codex' || + inferredProviderId === 'codex' ); - return memberProviderId === 'codex'; }); if (!needsCodexTurnSettledEnv) { diff --git a/test/main/services/team/TeamProvisioningServicePrepare.test.ts b/test/main/services/team/TeamProvisioningServicePrepare.test.ts index 3631dfae..82ef140b 100644 --- a/test/main/services/team/TeamProvisioningServicePrepare.test.ts +++ b/test/main/services/team/TeamProvisioningServicePrepare.test.ts @@ -1988,6 +1988,24 @@ describe('TeamProvisioningService prepare/auth behavior', () => { }); }); + it('adds Codex turn-settled env when a secondary member infers Codex from model', async () => { + const svc = new TeamProvisioningService(); + svc.setRuntimeTurnSettledEnvironmentProvider(async ({ provider }) => + provider === 'codex' + ? { AGENT_TEAMS_RUNTIME_TURN_SETTLED_SPOOL_ROOT: '/tmp/runtime-hooks' } + : null + ); + + const result = await (svc as any).buildRuntimeTurnSettledEnvironmentForMembers('anthropic', [ + { name: 'alice', providerId: 'anthropic' }, + { name: 'jack', model: 'gpt-5.4' }, + ]); + + expect(result).toEqual({ + AGENT_TEAMS_RUNTIME_TURN_SETTLED_SPOOL_ROOT: '/tmp/runtime-hooks', + }); + }); + it('does not add Codex turn-settled env when no member uses Codex', async () => { const svc = new TeamProvisioningService(); const provider = vi.fn(async () => ({