@@ -180,6 +180,7 @@ describe("CLI attempt execution", () => {
180180 sessionStore : Record < string , SessionEntry > ;
181181 body : string ;
182182 runId : string ;
183+ cwd ?: string ;
183184 } ) {
184185 await runAgentAttempt ( {
185186 providerOverride : "claude-cli" ,
@@ -192,6 +193,7 @@ describe("CLI attempt execution", () => {
192193 sessionAgentId : "main" ,
193194 sessionFile : path . join ( tmpDir , "session.jsonl" ) ,
194195 workspaceDir : tmpDir ,
196+ cwd : params . cwd ,
195197 body : params . body ,
196198 isFallbackRetry : false ,
197199 resolvedThinkLevel : "medium" ,
@@ -495,6 +497,48 @@ describe("CLI attempt execution", () => {
495497 expect ( sessionStore [ sessionKey ] ?. claudeCliSessionId ) . toBe ( cliSessionId ) ;
496498 } ) ;
497499
500+ it ( "checks Claude CLI transcript content under the process cwd" , async ( ) => {
501+ const sessionKey = "agent:main:direct:claude-transcript-cwd-present" ;
502+ const cliSessionId = "existing-claude-cwd-session" ;
503+ const homeDir = path . join ( tmpDir , "home" ) ;
504+ const cwd = path . join ( tmpDir , "task" ) ;
505+ const projectsDir = resolveClaudeCliProjectDirForWorkspace ( {
506+ workspaceDir : cwd ,
507+ homeDir,
508+ } ) ;
509+ process . env . HOME = homeDir ;
510+ await fs . mkdir ( projectsDir , { recursive : true } ) ;
511+ await fs . writeFile (
512+ path . join ( projectsDir , `${ cliSessionId } .jsonl` ) ,
513+ `${ JSON . stringify ( {
514+ type : "assistant" ,
515+ message : {
516+ role : "assistant" ,
517+ content : [ { type : "text" , text : "previous reply" } ] ,
518+ } ,
519+ } ) } \n`,
520+ "utf-8" ,
521+ ) ;
522+ const sessionEntry = makeClaudeCliSessionEntry ( "openclaw-session-cwd" , cliSessionId ) ;
523+ const sessionStore : Record < string , SessionEntry > = { [ sessionKey ] : sessionEntry } ;
524+ await fs . writeFile ( storePath , JSON . stringify ( sessionStore , null , 2 ) , "utf-8" ) ;
525+ runCliAgentMock . mockResolvedValueOnce ( makeCliResult ( "resumed cli response" ) ) ;
526+
527+ await runClaudeCliAttempt ( {
528+ sessionKey,
529+ sessionEntry,
530+ sessionStore,
531+ body : "continue from task cwd" ,
532+ runId : "run-cli-transcript-cwd-present" ,
533+ cwd,
534+ } ) ;
535+
536+ expect ( runCliAgentMock ) . toHaveBeenCalledTimes ( 1 ) ;
537+ expect ( firstRunCliAgentArg ( ) . cliSessionId ) . toBe ( cliSessionId ) ;
538+ expect ( firstRunCliAgentArg ( ) . cwd ) . toBe ( cwd ) ;
539+ expect ( sessionStore [ sessionKey ] ?. cliSessionIds ?. [ "claude-cli" ] ) . toBe ( cliSessionId ) ;
540+ } ) ;
541+
498542 it ( "passes session-bound OpenAI Codex auth profile to codex-cli aliases" , async ( ) => {
499543 const sessionKey = "agent:main:direct:codex-cli-auth-alias" ;
500544 const sessionEntry : SessionEntry = {
0 commit comments