security: stop logging user prompt content on container errors
Container error logs wrote the full ContainerInput (including user prompt) to disk on every non-zero exit. The structured log stream also included the first 200 chars of agent output. - container-runner: only include full input at verbose level; error path now logs prompt length and session ID instead - index: log output length instead of content snippet Fixes #1150
This commit is contained in:
@@ -503,10 +503,24 @@ export async function runContainerAgent(
|
|||||||
const isError = code !== 0;
|
const isError = code !== 0;
|
||||||
|
|
||||||
if (isVerbose || isError) {
|
if (isVerbose || isError) {
|
||||||
|
// On error, log input metadata only — not the full prompt.
|
||||||
|
// Full input is only included at verbose level to avoid
|
||||||
|
// persisting user conversation content on every non-zero exit.
|
||||||
|
if (isVerbose) {
|
||||||
|
logLines.push(
|
||||||
|
`=== Input ===`,
|
||||||
|
JSON.stringify(input, null, 2),
|
||||||
|
``,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
logLines.push(
|
||||||
|
`=== Input Summary ===`,
|
||||||
|
`Prompt length: ${input.prompt.length} chars`,
|
||||||
|
`Session ID: ${input.sessionId || 'new'}`,
|
||||||
|
``,
|
||||||
|
);
|
||||||
|
}
|
||||||
logLines.push(
|
logLines.push(
|
||||||
`=== Input ===`,
|
|
||||||
JSON.stringify(input, null, 2),
|
|
||||||
``,
|
|
||||||
`=== Container Args ===`,
|
`=== Container Args ===`,
|
||||||
containerArgs.join(' '),
|
containerArgs.join(' '),
|
||||||
``,
|
``,
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ async function processGroupMessages(chatJid: string): Promise<boolean> {
|
|||||||
: JSON.stringify(result.result);
|
: JSON.stringify(result.result);
|
||||||
// Strip <internal>...</internal> blocks — agent uses these for internal reasoning
|
// Strip <internal>...</internal> blocks — agent uses these for internal reasoning
|
||||||
const text = raw.replace(/<internal>[\s\S]*?<\/internal>/g, '').trim();
|
const text = raw.replace(/<internal>[\s\S]*?<\/internal>/g, '').trim();
|
||||||
logger.info({ group: group.name }, `Agent output: ${raw.slice(0, 200)}`);
|
logger.info({ group: group.name }, `Agent output: ${raw.length} chars`);
|
||||||
if (text) {
|
if (text) {
|
||||||
await channel.sendMessage(chatJid, text);
|
await channel.sendMessage(chatJid, text);
|
||||||
outputSentToUser = true;
|
outputSentToUser = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user