Tyler Yust
f32590ec43
sessions_spawn: inline attachments with redaction, lifecycle cleanup, and docs
Add inline file attachment support for sessions_spawn (subagent runtime only):
- Schema: attachments[] (name, content, encoding, mimeType) and attachAs.mountPath hint
- Materialization: files written to .openclaw/attachments/<uuid>/ with manifest.json
- Validation: strict base64 decode, filename checks, size limits, duplicate detection
- Transcript redaction: sanitizeToolCallInputs redacts attachment content from persisted transcripts
- Lifecycle cleanup: safeRemoveAttachmentsDir with symlink-safe path containment check
- Config: tools.sessions_spawn.attachments (enabled, maxFiles, maxFileBytes, maxTotalBytes, retainOnSessionKeep)
- Registry: attachmentsDir/attachmentsRootDir/retainAttachmentsOnKeep on SubagentRunRecord
- ACP rejection: attachments rejected for runtime=acp with clear error message
- Docs: updated tools/index.md, concepts/session-tool.md, configuration-reference.md
- Tests: 85 new/updated tests across 5 test files
Fixes:
- Guard fs.rm in materialization catch block with try/catch (review concern #1)
- Remove unreachable fallback in safeRemoveAttachmentsDir (review concern #7)
- Move attachment cleanup out of retry path to avoid timing issues with announce loop
Co-authored-by: napetrov <napetrov@users.noreply.github.com>
2026-03-01 20:59:47 -08:00
..
2026-03-01 20:31:06 -08:00
2026-03-01 20:59:47 -08:00
2026-03-02 04:22:33 +00:00
2026-03-02 01:32:28 +00:00
2026-03-02 04:19:37 +00:00
2026-03-01 23:33:20 -05:00
2026-03-02 04:27:26 +00:00
2026-03-01 20:59:47 -08:00
2026-03-01 22:22:59 -06:00
2026-03-01 17:35:24 -08:00
2026-03-02 04:31:10 +00:00
2026-03-01 20:36:58 -08:00
2026-02-26 13:04:37 +01:00
2026-03-02 04:29:18 +00:00
2026-02-26 21:57:52 +01:00
2026-03-02 04:04:36 +00:00
2026-03-02 04:03:46 +00:00
2026-03-02 00:32:33 +00:00
2026-03-02 04:14:06 +00:00
2026-03-02 04:14:06 +00:00
2026-02-24 23:10:19 +00:00
2026-03-01 12:16:50 -06:00
2026-03-02 01:12:53 +00:00
2026-02-26 22:36:20 +01:00
2026-03-02 04:04:36 +00:00
2026-03-02 04:04:36 +00:00
2026-03-02 02:23:53 +00:00
2026-02-23 21:17:37 -05:00
2026-03-02 01:47:02 +00:00
2026-03-02 03:52:02 +00:00
2026-03-01 20:51:45 -06:00
2026-02-28 14:02:56 -08:00
2026-02-28 13:20:50 -08:00
2026-03-02 03:28:25 +00:00
2026-03-02 02:23:22 +00:00
2026-03-02 04:14:06 +00:00
2026-03-02 03:10:02 +00:00
2026-02-22 18:37:25 +00:00
2026-02-28 18:38:00 -05:00
2026-02-27 23:41:22 -06:00
2026-03-01 20:31:06 -08:00
2026-02-26 18:39:13 -05:00
2026-02-26 21:57:52 +01:00
2026-02-22 18:13:23 -05:00
2026-03-01 19:40:40 -08:00
2026-03-01 18:07:34 -08:00
2026-03-01 15:45:21 -08:00
2026-03-01 14:23:46 -08:00
2026-02-22 13:19:25 +01:00
2026-02-22 13:19:25 +01:00
2026-03-02 04:04:36 +00:00
2026-03-02 04:04:36 +00:00