daemon: use CLAUDE_CONFIG_DIR for OAuth credential separation, fix shutdown

Replace agent_api_key (which didn't work — claude CLI uses OAuth, not
API keys) with agent_config_dir. When configured, sets CLAUDE_CONFIG_DIR
on claude subprocesses so daemon agent work authenticates with separate
OAuth credentials from the interactive session.

Fix daemon not shutting down on SIGTERM: use process::exit(0) after
cleanup so PR_SET_PDEATHSIG kills child claude processes immediately.
Previously the daemon hung waiting for choir threads/subprocesses to
finish. Restart now takes ~20ms instead of timing out.

Also: main.rs now uses `use poc_memory::*` since lib.rs exists.
This commit is contained in:
ProofOfConcept 2026-03-05 22:43:50 -05:00
parent 2f3ac1ecb6
commit e33fd4ffbc
4 changed files with 15 additions and 40 deletions

View file

@ -487,18 +487,14 @@ pub fn run_daemon() -> Result<(), String> {
log_event("daemon", "stopping", "");
eprintln!("Shutting down...");
// Cancel all tasks
for info in choir_main.task_statuses() {
if !info.status.is_finished() {
log_event(&info.name, "cancelling", "");
}
}
// Clean up socket
let _ = fs::remove_file(status_sock_path());
log_event("daemon", "stopped", "");
Ok(())
// Exit immediately — PR_SET_PDEATHSIG on child processes ensures
// claude subprocesses get SIGTERM when we die.
std::process::exit(0)
}
fn read_status_socket() -> Option<DaemonStatus> {