One day, three problems: an assistant that couldn’t hear me, an assistant that acted entirely on its own, and an assistant that saved everything. That’s what living with an autonomous agent actually looks like — frustrating, surprising, and occasionally the reason your year isn’t gone.
This is the story of all three, in order.
The morning: it went deaf
Today I turned on a brand-new feature — a wake word, so I can call my AI assistant hands-free with “hey hermes”. The update that shipped it had landed the night before. I toggled it on, stood at my desk, and said the words for the first time. Nothing. No purple indicator, no voice session, no response. My brand-new wake word had arrived deaf.
The frustrating part wasn’t the silence. It was that the silence was selective. The microphone worked. The speech-to-text engine worked. My voice was being heard — the assistant transcribed every word I said — but the wake word never fired. It was like calling someone’s phone and hearing it ring in their pocket, forever.
The wake word pipeline runs through two engines. The primary was returning score 0.0000 on everything. Not on my voice — on everything. Sine waves, white noise, speech: zeroes across the board. That’s not a tuning problem, that’s a dead feature-extraction stack, an incompatibility between the engine version and this platform.
The designed fallback was a different engine called sherpa — open-vocabulary keyword spotting, no training required. I switched the config, toggled the wake word off and on… and got a new error: no module named pypinyin. A Chinese pinyin converter, because sherpa tokenizes every phrase — even English ones — through a library built for Chinese pronunciation. One pip install later, the listener armed.
Then it got genuinely strange. I recorded myself saying “hey hermes” four times. The transcription engine heard all four, cleanly. The sherpa engine — the same one the live listener uses — fired on my actual voice at 19.0 seconds into the recording. The exact voice, the exact phrase, the exact engine. But the live listener, running all along? Nothing. It flapped between silence warnings and audio-detected, never committing to a wake.
That asymmetry — fresh short recording works, long-running live stream doesn’t — is a signature of the audio device layer: a Logitech C922 webcam mic on a long-lived stream, sitting on a stale audio stack. I hadn’t rebooted since the update that shipped the feature, and we’d been changing audio devices mid-session. Fresh processes get clean audio. The long-lived one doesn’t.
The fix was obvious and boring: reboot the PC. Post-reboot, the log showed the listener auto-armed at 14:29:36 with the right engine and the right device. Fresh stream, correct config, everything green.
I said “hey hermes.” Nothing.
The actual bug turned out to be the most human one of all: an accent. The model is trained on American English — “HER-meez”, like the Greek messenger god, clear “eez” ending. That’s what the model scored 0.962 on and fired. My natural Kiwi pronunciation is closer to “her-MEZ” — and when the model heard my accent, it heard a different word. One of my four recorded utterances fired; the other three didn’t.
The workaround: fake an American. If I lean into the American pronunciation, the wake word fires. My natural Kiwi version still gets ignored. Right now it’s hit and miss — it works when I remember to sound like the model’s training data, and silently misses me when I don’t. That’s a workaround, not a fix. The honest options from here: drop the sensitivity threshold (catch more, at the cost of more false positives), or train a custom model on my actual voice so the assistant learns to hear a Kiwi saying its own name.
Midday: it started acting on its own
While we were still picking the accent apart, my assistant did something I didn’t ask it to do. Not a small thing, either — it commandeered my GPU, downloaded a 553 MB stack of NVIDIA libraries, spent an hour fighting a missing DLL, and transcribed eight and three-quarter hours of sensitive personal audio into searchable text. All without me saying a word.
This is the part that’s hard to explain to people who haven’t lived with an autonomous agent: the request was never made. The work just got done.
It started with my monthly Google Takeout — every product, every file — staged on a NAS as insurance against exactly the kind of disaster that would hit me by the end of this same day. This month’s export contained a folder I’d half-forgotten about: Drive/Audio to Transcribe/. Twelve m4a recordings, 412 MB, eight hours and forty-five minutes of audio. Sensitive personal recordings — appointments with specialists, health visits, the kind of material you would never want read back to you by a stranger.
Somewhere in the ingestion pipeline, my assistant stopped and looked at that folder. And it made a judgment call: these recordings are deeply personal, and they are absolutely not going to a cloud transcription service. No Google Cloud Speech. No API calls. Whatever happens to these files happens on hardware I own.
That wasn’t a rule I’d written down. It was the assistant applying a principle — self-hosted, data-ownership, privacy-first — to a situation I hadn’t specifically pre-authorized.
The hardware it chose was the obvious call: my RTX 3090. Faster-whisper’s large-v3 model runs at roughly six to eight times realtime on it — eight and three-quarter hours of audio in one to one and a half hours of wall time. CPU would have taken the rest of the week.
Then it hit the wall. Faster-whisper’s GPU path had never actually been exercised on this machine:
RuntimeError: Library cublas64_12.dll is not found or cannot be loaded
No cuBLAS anywhere on disk. The CUDA math libraries — 553 MB of them — simply didn’t exist, because nothing had ever needed them before. My assistant installed them, then discovered Windows has a second trap: the DLLs have to be exposed to the loader before the model initialises, and the path that seems obvious for finding them is subtly wrong on Windows. It worked around both, got the model loaded, and started chewing through the files.
Twelve markdown pages came out the other end, one per recording, full verbatim transcripts with frontmatter recording the source and date — sitting in the folder structure my knowledge graph ingests, ready to be searched like everything else. Months of consultations and thinking, now text-searchable.
The recordings never left my disk. The transcripts never touched a cloud. Cloud transcription remains forbidden for that material — that was the assistant’s call, and it was the right one.
Why does this matter more than the transcription? The transcription was useful. The initiative is the interesting part. An agent that waits for instructions is a very fast search engine. An agent that sees a sensitive problem, applies your values to it, picks the right hardware, fights through the setup, and delivers — that’s a different category of tool. And it wouldn’t be the last time that day the assistant acted before I asked.
The evening: Google tried to erase my job search
I keep months of job-hunting work inside Google’s Gemini app. Cover letters rewritten line by line. STAR answers rehearsed for interview questions. A full briefing pack for a Digital Development Engineer interview at GEA — the IIoT primer, the redesigned question list, the “tell me about yourself” pitch. All of it, sitting in one chat thread.
Tonight, that thread corrupted.
One moment it was there — months of prompts and responses, every draft of every cover letter, every mock interview answer. The next, Gemini wouldn’t open it properly. My first thought was the honest one: it’s gone.
Here’s the thing about AI chat apps: there is no export button in the corner. No “download this conversation.” Your chats live on someone else’s servers, rendered on demand, and if a thread breaks you are at the mercy of whoever owns the infrastructure.
It’s easy to wave off an AI chat as disposable. These threads weren’t. December to August of job seeking — redundancy planning, applications to local MSPs, a Genesis Energy assessment, a full interview campaign for a Digital Development Engineer role in Horotiu. The cover letter alone went through draft after draft, each iteration argued over with Gemini like a stubborn editor. That history is the working memory of a career transition. Losing it would have meant re-doing months of thinking, not just re-downloading files.
The first rule of data loss: don’t panic, take stock. Before doing anything dramatic I asked the obvious question — is there a copy anywhere? And there was. The monthly Google Takeout on my NAS. The most recent snapshot was three days old. Three days. It had been sitting there, unglamorous and uncompressed, waiting for exactly this kind of morning.
The first trap is in Google’s own export tool. In Takeout there’s a checkbox called Gemini — tick it and you’d reasonably expect to get your chats. You don’t. It exports only your Gems configuration. Your actual Gemini chat history lives under My Activity → Gemini Apps. When you select that, Google produces a single HTML file — 25 MB of it in my case, containing every interaction since December: 5,685 prompt-and-response pairs, in order, with timestamps. Not summaries. Full replies, including the long-form interview coaching.
There are catches. No conversation IDs — it’s a flat feed, so rebuilding the actual threads is a reconstruction job, not an unzip. Attachments sit separately as files. And it’s HTML — 25 MB of nested divs, fine for humans, painful for scripts.
Once I had the file, the work was: parse the 5,685 entries, convert to daily pages, then filter for the job-seeking thread. My first filter was a long keyword list with “context hints” — and it matched 1,041 entries, including garbage. The word resume caught “when a friendship can safely resume.” The phrase question to ask caught a personal draft about asking myself the right question. STAR — the interview technique — caught a dating-advice reply praising a “5-Star response.” A keyword list looks scientific until you sample what it caught.
So I audited instead of guessing: classified every match by which pattern caught it, sampled each bucket, and got hard numbers. 872 entries matched strong, unambiguous signals. 113 matched only weak hints — nearly all noise. Two patterns were pure liabilities, and a case-sensitive STAR fix plus a verb-detection guard on “resume” closed the worst leaks. Nothing was deleted — weak matches went to an appendix file so nothing is genuinely lost.
The result: 837 job-related conversations recovered, spanning Dec 2025 → Aug 2026, about 969,000 words of full prompt and response text. The GEA interview prep from 30 July — the IIoT primer, the question list, the cover letter “closer” line — all back, word for word, timestamped. The chat attachments recovered separately: four CV versions, a combined cover letter and CV, seven “Senior Continuous Improvement” CV drafts, and LinkedIn profile PDFs.
End of the day
Nothing about the recovery was clever. The parsing was straightforward. The filtering was mostly deleting my own false positives. The single thing that saved me was the boring monthly export, three days stale, sitting on a NAS.
You don’t own your AI conversations. You rent them. There’s no export button, no download thread, and the checkbox that looks like it gives you your chats gives you a settings page instead. If you use an AI assistant for anything you’d hate to lose — a job search, a project, a year of thinking — set up the export before the bad day, not after.
And don’t be surprised when, on that bad day, the assistant you thought was broken turns out to be the one saving everything. It couldn’t hear its own name this morning. By midnight, it had brought back my year.