{"record":{"id":"96008d8c21514539","repo":"SillyTavern/SillyTavern","slug":"forbidden-96008d","errorCode":null,"errorMessage":"Forbidden","messagePattern":"Forbidden","errorType":"http","errorClass":null,"httpStatus":403,"severity":"error","filePath":"src/endpoints/backgrounds.js","lineNumber":74,"sourceCode":"                const filename = relativePath.split('/').pop() || relativePath;\n                imageFolderMap[filename] = meta.folderIds;\n            }\n        }\n\n        response.json({ folders, imageFolderMap });\n    } catch (error) {\n        console.error('[Backgrounds] Folders endpoint error:', error);\n        response.status(500).json({ error: 'Internal server error.' });\n    }\n});\n\nrouter.post('/delete', getFileNameValidationFunction('bg'), async function (request, response) {\n    try {\n        if (!request.body) return response.sendStatus(400);\n\n        if (request.body.bg !== sanitize(request.body.bg)) {\n            console.error('Malicious bg name prevented');\n            return response.sendStatus(403);\n        }\n\n        const fileName = path.join(request.user.directories.backgrounds, sanitize(request.body.bg));\n\n        if (!fs.existsSync(fileName)) {\n            console.error('BG file not found');\n            return response.sendStatus(400);\n        }\n\n        fs.unlinkSync(fileName);\n        invalidateThumbnail(request.user.directories, 'bg', request.body.bg);\n\n        // Remove metadata for deleted image\n        const relativePath = path.join('backgrounds', request.body.bg);\n        await removeMetadata(request.user.directories.root, relativePath).catch(err => {\n            console.warn('[Backgrounds] Failed to remove metadata:', err.message);\n        });\n","sourceCodeStart":56,"sourceCodeEnd":92,"githubUrl":"https://github.com/SillyTavern/SillyTavern/blob/8172dcd0ee672d3cd9a5e5f7af134f91a45cd2b8/src/endpoints/backgrounds.js#L56-L92","documentation":"Error \"Forbidden\" thrown in SillyTavern/SillyTavern.","triggerScenarios":"Thrown at src/endpoints/backgrounds.js:74 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a background filename without path separators or special characters; the name failed sanitization.","Do not attempt directory traversal (../) in the bg parameter."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8172dcd0ee672d3cd9a5e5f7af134f91a45cd2b8","analyzedAt":"2026-08-13T07:48:40.832Z","schemaVersion":2},"datasetVersion":"2026-08-13T09:17:06.757Z"}