fix: rollback in-memory key on store failure, add corrupted-data and rollback tests

This commit is contained in:
2026-03-01 13:20:16 +01:00
parent 226c9193d6
commit 4bd7e6cd99
4 changed files with 70 additions and 11 deletions

View File

@@ -127,10 +127,16 @@ export function registerChatHandlers(): void {
ipcMain.handle('chat:setApiKey', async (_, apiKey: string) => {
try {
const manager = await getOpenCodeManager();
const previousKey = manager.getApiKey();
manager.setApiKey(apiKey);
// Persist to encrypted storage
await getSecureKeyStore().store('opencode_api_key', apiKey);
// Persist to encrypted storage — roll back in-memory key on failure
try {
await getSecureKeyStore().store('opencode_api_key', apiKey);
} catch (storeError) {
manager.setApiKey(previousKey);
throw storeError;
}
return { success: true };
} catch (error) {