Back to catalogue
WorkflowSessionEndSessionEndOn Claude Code session end· non-blocking
Temporary file cleanup at session end
Automatically removes temporary files (.tmp) and stale artifacts from the logs directory at session end.
Use cases
- Keep a clean logs directory without manual intervention
- Free disk space at the end of a long session
Providers & tags
Claude Code
#cleanup#session#temp-files#maintenance
settings.json fragment
{
"hooks": {
"SessionEnd": [
{
"hooks": [
{
"command": "node $CLAUDE_PROJECT_DIR/.claude/hooks/session-end-cleanup.mjs",
"type": "command"
}
],
"matcher": ""
}
]
}
}Script · .claude/hooks/session-end-cleanup.mjs
#!/usr/bin/env node
// Nettoie les fichiers temporaires Claude datant de plus de 24h (SessionEnd)
import { readdirSync, statSync, unlinkSync } from 'fs';
import { join } from 'path';
import { fileURLToPath } from 'url';
const MAX_AGE_MS = 24 * 60 * 60 * 1_000;
const PREFIX = 'claude-';
export function run({
readdir = readdirSync,
stat = statSync,
unlink = unlinkSync,
tmp = '/tmp',
maxAge = MAX_AGE_MS,
now = () => Date.now(),
} = {}) {
let cleaned = 0;
try {
for (const f of readdir(tmp)) {
if (!f.startsWith(PREFIX)) continue;
const fp = join(tmp, f);
try {
const age = now() - stat(fp).mtimeMs;
if (age > maxAge) {
unlink(fp);
cleaned++;
}
} catch {}
}
} catch {}
return cleaned > 0
? { cleaned, message: `[session-end-cleanup] ${cleaned} fichier(s) temporaire(s) supprimé(s).\n` }
: { cleaned: 0 };
}
/* v8 ignore next 4 */
if (process.argv[1] === fileURLToPath(import.meta.url)) {
const result = run();
if (result?.message) process.stderr.write(result.message);
}