@@ -16,6 +16,7 @@ import {
1616import { type ServerType , serve } from "@hono/node-server" ;
1717import { execGh } from "@posthog/git/gh" ;
1818import { getCurrentBranch } from "@posthog/git/queries" ;
19+ import { buildAdditionalDirectoriesPrompt } from "@posthog/shared" ;
1920import { unzipSync } from "fflate" ;
2021import { Hono } from "hono" ;
2122import { z } from "zod" ;
@@ -2481,11 +2482,14 @@ export class AgentServer {
24812482 slackThreadUrl ?: string | null ,
24822483 inboxReportUrl ?: string | null ,
24832484 ) : string | { append : string } {
2484- const cloudAppend = this . buildCloudSystemPrompt (
2485- prUrl ,
2486- slackThreadUrl ,
2487- inboxReportUrl ,
2488- ) ;
2485+ // Extra cloned repos are surfaced to the model exactly like the local
2486+ // agent's additional directories, so it knows it may work across them.
2487+ const cloudAppend = [
2488+ this . buildCloudSystemPrompt ( prUrl , slackThreadUrl , inboxReportUrl ) ,
2489+ buildAdditionalDirectoriesPrompt ( this . config . additionalDirectories ) ,
2490+ ]
2491+ . filter ( Boolean )
2492+ . join ( "\n\n" ) ;
24892493 const userPrompt = this . config . claudeCode ?. systemPrompt ;
24902494
24912495 // String override: combine user prompt with cloud instructions
@@ -2523,8 +2527,14 @@ export class AgentServer {
25232527 const plugins = this . config . claudeCode ?. plugins ;
25242528 const effort =
25252529 runtimeAdapter === "claude" ? this . config . reasoningEffort : undefined ;
2530+ // Claude-only: the SDK enforces directory access. Codex relies on the
2531+ // <additional_directories> prompt block plus the sandbox's open filesystem.
2532+ const additionalDirectories =
2533+ runtimeAdapter === "claude"
2534+ ? this . config . additionalDirectories
2535+ : undefined ;
25262536
2527- if ( ! plugins ?. length && ! effort ) {
2537+ if ( ! plugins ?. length && ! effort && ! additionalDirectories ?. length ) {
25282538 return undefined ;
25292539 }
25302540
@@ -2535,6 +2545,9 @@ export class AgentServer {
25352545 if ( effort ) {
25362546 options . effort = effort ;
25372547 }
2548+ if ( additionalDirectories ?. length ) {
2549+ options . additionalDirectories = additionalDirectories ;
2550+ }
25382551 return { claudeCode : { options } } ;
25392552 }
25402553
0 commit comments