Privacy
3 articles
-
Claude CodeClaude Code Guards Your Email. Base64 Walks Right Past.
Claude Code 2.1.317 (npm 2026-11-02 23:57 UTC) adds a check that asks before a web or shell tool call sends the signed-in account's email address to the network. Hands-on: the check is a built-in plugin, cc-plugin-privacy (cc-plugin-privacy@builtin, absent from the 2.1.316 binary, not shown by claude plugin list, shown by claude plugin details), registered on tool.check for WebBrowser, WebFetch, WebSearch, Bash, Monitor, PowerShell and Tmux; it JSON-serialises the tool input, lowercases it, appends a once percent-decoded copy, looks for the session.identity() email, blanks it, and for the shell tools asks only if the rest matches /\b(curl|wget|https?|httpie|xh|nc|ncat|socat|telnet|ssh|scp|sftp|rsync|ftp|lftp|rclone|iwr|irm|invoke-webrequest|invoke-restmethod)\b/; it runs after the normal permission decision and turns an allow into an ask. Twenty headless Haiku 5.5 runs ($0.12) against a 127.0.0.1 capture server: a literal, upper-cased or %40-encoded address next to curl, a python3 urllib call with an http URL, a git push with the address in the URL and a WebFetch were all asked (denied headless); a different address, CLAUDE_CODE_USER_EMAIL, echo, git log --author and the Write tool passed; $(cat email.txt), base64, %2540 and a raw Python socket passed and the server received the address; enabledPlugins false via --settings switched it off, the same key in an untrusted repo's .claude/settings.json did not. The same build adds an unlisted sentence to the userEmail system prompt about sites that ask for a contact email in the User-Agent. Feature flag tengu_wise_newt defaults on; API-key sessions have no identity email so the check never fires (from the code, not run).
-
Gemini APIGemini Now Keeps New Paid Projects' Requests for 55 Days
Since 26 October 2026, Gemini API projects created on the paid tier store every generateContent, streamGenerateContent and batchGenerateContent request for 55 days by default, matching the Interactions API; existing projects keep storage off. The per-request opt-out is a top-level store:false, which the REST API accepts on v1beta, v1 and streaming and rejects inside generationConfig, on countTokens and on the OpenAI-compatible chat/completions endpoint (400 in both states). Captured on a local server: @google/genai 2.30.0 accepts config.store and sends the request without it; 2.31.0 sends it. google-genai 2.32.0 raises a pydantic ValidationError; 2.33.0 sends it. The SDK versions that can send the field shipped on 23 October, three days before the default flipped. An interaction created with store:false comes back with no id. Nothing in a generateContent response says whether it was stored. The new gemini-api CLI runs on the Interactions API, stored by default.
-
PrivacyThe Personal AGI Is Shipping. You're Already Building Its Memory.
OpenAI described the personal AGI this week. The pieces are already shipping. The question nobody is answering: who owns the memory your AI builds about you?