diff --git a/bin/install.js b/bin/install.js index b7f11e4cf6..4d297d2a1e 100755 --- a/bin/install.js +++ b/bin/install.js @@ -563,9 +563,11 @@ function generateCodexAgentToml(agentName, agentContent) { const lines = [ `sandbox_mode = "${sandboxMode}"`, - `developer_instructions = """`, + // Agent prompts contain raw backslashes in regexes and shell snippets. + // TOML literal multiline strings preserve them without escape parsing. + `developer_instructions = '''`, instructions, - `"""`, + `'''`, ]; return lines.join('\n') + '\n'; } diff --git a/tests/codex-config.test.cjs b/tests/codex-config.test.cjs index 758eedc845..58fe10e038 100644 --- a/tests/codex-config.test.cjs +++ b/tests/codex-config.test.cjs @@ -155,9 +155,9 @@ tools: Read, Grep, Glob test('includes developer_instructions from body', () => { const result = generateCodexAgentToml('gsd-executor', sampleAgent); - assert.ok(result.includes('developer_instructions = """'), 'has triple-quoted instructions'); + assert.ok(result.includes("developer_instructions = '''"), 'has literal triple-quoted instructions'); assert.ok(result.includes('You are an executor.'), 'body content in instructions'); - assert.ok(result.includes('"""'), 'has closing triple quotes'); + assert.ok(result.includes("'''"), 'has closing literal triple quotes'); }); test('defaults unknown agents to read-only', () => {