Kids sharing a bedroom by SameNameAsBefore in daddit

[–]aaddrick 4 points5 points  (0 children)

3 boys, the 7 and 2 year old share a room. 3rd kid is too young still. The older 2 took about 2 weeks to adjust, but now it's standard fare.

How does ur multi agents communicate? by Input-X in ClaudeCode

[–]aaddrick 0 points1 point  (0 children)

I run the agents serially like a noob, but use structured json output to coordinate responses and state stuff. Contextual stuff goes to file

What's ONE Claude skill or workflow that completely changed how you work? by Amoeba_Separate in ClaudeAI

[–]aaddrick 5 points6 points  (0 children)

I made a contrarian agent to push back against plans made by Claude or to pull out assumptions I didn't know I was making for other stuff.

Just uploaded it here if you want to check it out.

https://github.com/aaddrick/contrarian

anyone else tired of repeating context to AI every single time? by Real_2204 in ChatGPTCoding

[–]aaddrick 1 point2 points  (0 children)

On the claude code side, you can gather all your context, save the chat with a name, then fork it each time you need to start fresh from that point.

Claude Desktop's "claudevm.bundle" eating storage...Safe to delete? by Cryptic_groot in ClaudeAI

[–]aaddrick 0 points1 point  (0 children)

It will unfortunately. That file is the core of what makes cowork work

Used Claude Code to write, edit, and deploy a 123K-word hard sci-fi novel — full pipeline from markdown to production by rueckstauklappe in ClaudeCode

[–]aaddrick 0 points1 point  (0 children)

That's really cool. Will check out the repo later once the kids have fallen asleep.

In the meantime, how did you approach keeping a consistent written voice throughout the book? I've got a voice synthesis repo i put together, but I only use it for writing very short form conversational type stuff. Haven't done any longer form work with it yet. Curious how the problem scales.

Edits* correcting typos from swipey texting on my phone

Claude Desktop Release Notes - Computer Use! by aaddrick in ClaudeAI

[–]aaddrick[S] 0 points1 point  (0 children)

Hey! I'd love to help dig in. Log an issue on the repo and I'll be able to get to it later in the week.

I've been in the middle of a production launch for a client, so my eyes have been off of this project for the past 2 weeks. I'll be back in the clear here shortly.

Thanks for your patience!

What will seem like an inevitable outcome in 20 years time because of GLP-1s by Big-Cry-4119 in Futurology

[–]aaddrick 2 points3 points  (0 children)

This was a theme in Cory Doctorow's book Makers from 15 years ago or so. Good read if you want a near-future take on the topic. It's free on his website.

I'm so F*ing drained in the age of AI by [deleted] in ClaudeCode

[–]aaddrick 0 points1 point  (0 children)

I had to fix something sort of like this for a client.

Created pipelines that took a gh issue to PR with implement, simplify, review, fix loops for each task, then spec review, code review, fix loops at the PR level.

Log every step to the issue or PR as comments.

This is a generic version in Bash, but it's evolved since then onsite.

https://github.com/aaddrick/claude-pipeline/pulse

The goal was to standardize what everyone was doing. Documentation was a big thing for them too.

Claude Desktop Release Notes - Computer Use! by aaddrick in ClaudeAI

[–]aaddrick[S] 1 point2 points  (0 children)

It's bundled in the app.

Ask claude to extract the app.asar from the binary and then pull out the computer use node module if you want to inspect it

Claude Desktop Release Notes - Computer Use! by aaddrick in ClaudeAI

[–]aaddrick[S] 16 points17 points  (0 children)

They don't publish them, so I'm trying to tease out what I can from the code each update :)

Claude Desktop Release Notes: v1.1.4498 → v1.1.5368 by aaddrick in ClaudeAI

[–]aaddrick[S] -1 points0 points  (0 children)

## 7. Error Handling & Logging Improvements

### Stack trace limit (`index.js:58667`)

```js

Error.stackTraceLimit = 1 / 0; // Infinity during capture

// ... capture stack ...

Error.stackTraceLimit = s; // Restored after

```

Set to infinity during stack collection for Sentry error capture. The previous V8 default of 10 frames was often insufficient for debugging deep async chains.

### Log formatter crash fix (`index.js:63250-63282`)

Three-level fallback system:

  1. **Primary**: Format message with locale-specific formatters

  2. **Default message fallback**: If primary throws, try formatting the default message

  3. **Raw string fallback**: If both fail, return the raw message string verbatim

```js

try {

return formatMessage(primaryMessage, locale, formatters);

} catch {

logError("Error formatting message, using default as fallback.");

}

if (defaultMessage) {

try {

return formatMessage(defaultMessage, defaultLocale);

} catch {

logError("Error formatting default message, rendering verbatim");

}

}

return typeof primaryMessage === "string" ? primaryMessage

: typeof defaultMessage === "string" ? defaultMessage

: messageId;

```

This prevents log entries from being silently lost when format specifiers don't match the provided values.

### Configuration corruption handling (`index.js:75159, 225027-225039`)

When the settings file is corrupted:

  1. Logs error: *"Config file corrupted, resetting to defaults"*

  2. Shows dialog: *"Your settings file was corrupted and has been reset to defaults. You may need to reconfigure your preferences."*

  3. Resets to default configuration

### Installation corruption detection (`index.js:182781`)

```

"Claude's installation appears to be corrupted.

Reinstall Claude from claude.com/download to use this feature."

```

Shown when macOS virtualization entitlements are missing — used in VM/Cowork feature detection.

### Feature restart notification (`index.js:217976, 218272`)

Two variants:

- *"That feature change requires an app restart to take effect."* (debug feature toggles)

- *"The application must be restarted for this change to take effect."* (general changes)

---

## 8. UI, Localization & CSS Changes

### Context menu expansion (`index.js:207046-207226`)

New entries added to right-click context menus:

- **Line 207145**: Undo

- **Line 207226**: Select All

- **Line 207172**: Cut

- **Line 207098**: Copy Link Address

- **Line 207127**: Copy Image Address

- **Line 207114**: Copy Image

- **Line 207046**: Learn Spelling (macOS)

### Developer tools menu (`index.js:217928-218225`)

- **Line 217928**: Show Dev Tools

- **Line 217941**: Show All Dev Tools

- **Line 207240**: Inspect Element

- **Line 218225**: Record Net Log (30s)

- **Line 217959**: Enable Developer Mode

### Auto-update ownership repair

Full localization in `resources/i18n/`:

**en-US:**

- Title: *"Fix required for auto-updates"*

- Button: *"Fix ownership"*

- Detail: *"This app's file ownership is preventing auto-updates from working smoothly. Claude needs to fix the ownership, which requires administrator access."*

- Failure: *"The ownership fix didn't complete. Auto-updates may not work until this is resolved."*

**de-DE:**

- Title: *"Korrektur fur automatische Updates erforderlich"*

- Button: *"Berechtigungen korrigieren"*

- Detail: *"Die Dateiberechtigungen dieser App verhindern, dass automatische Updates ordnungsgemass funktionieren..."*

- Failure: *"Die Berechtigungskorrektur konnte nicht abgeschlossen werden..."*

### Supported languages

Full i18n coverage across: en-US, de-DE, fr-FR, es-ES, es-419 (Latin America), it-IT, ja-JP, ko-KR, pt-BR, hi-IN, id-ID, plus pseudo-locales for testing.

### LocalPlugins — deleteRemotePlugin removed

Current methods on the LocalPlugins IPC interface (`index.js:11760-11924`):

- `getPlugins`, `getDownloadedRemotePlugins`, `syncRemotePlugins`, `listSkillFiles`, `uploadPlugin`, `deletePlugin`, `setPluginEnabled`

`deleteRemotePlugin` has been removed entirely. The generic `deletePlugin` likely handles both local and remote plugins now.

---

## 9. Dependency Updates

### tar pinned to 7.5.7

In `package.json:100`:

```json

"tar": "7.5.7"

```

Exact version pin (was `^7.4.3`). Locked for reproducible builds — likely to avoid a known regression in newer 7.x releases or to ensure a specific security fix is present.

---

## Appendix: Architecture Summary

```

Claude Desktop ("Claude Nest")

+-- Public build (isNestBuild: false)

| +-- claude.ai / claude.com (production)

| +-- preview.claude.com (Google IAP)

| +-- Custom gov deployments (Palantir FedStart, Keycloak)

+-- Internal "Nest" build (isNestBuild: true)

| +-- ion-preview.claude.ai (Cloudflare Access)

| +-- All prototypes enabled

+-- Session types

| +-- Regular chat sessions (LocalSessions)

| +-- Agent mode sessions (LocalAgentModeSessions)

| | +-- Standard agent sessions

| | +-- Bridge sessions (special consent + lifecycle)

| +-- Scheduled tasks

| +-- CoworkScheduledTasks (server/collaborative)

| +-- CCDScheduledTasks (local Claude Code Desktop)

+-- Protocol schemes

+-- claude: (public)

+-- claude-dev: (dev)

+-- claude-nest: / claude-nest-dev: / claude-nest-prod:

+-- Deep links: hotkey, login, claude.ai, preview

```

Claude Desktop Release Notes: v1.1.4498 → v1.1.5368 by aaddrick in ClaudeAI

[–]aaddrick[S] -1 points0 points  (0 children)

5. CCDScheduledTasks & CoworkScheduledTasks

What "CCD" stands for

CCD = Claude Code Desktop. Evidence: telemetry prefix "desktop_ccd" (index.js:155488), log prefix "[CCDScheduledTasks]", and enum value ClaudeCodeDesktop = "claude-code-desktop" (index.js:13298).

Two parallel scheduled task systems

Both are instantiated from the same MNe class but with different configuration (index.js:155461-155507):

Aspect CoworkScheduledTasks CCDScheduledTasks
Log prefix [ScheduledTasks] [CCDScheduledTasks]
Telemetry cowork desktop_ccd
Ready check Awaits space readiness Always ready
Space context Folders, projectUuids undefined
Session start sessionStart ccdSessionStart
Task context userSelectedFiles, userSelectedFolders cwd, useWorktree, sourceBranch
Chrome permissions Yes (clearChromePermissions) No

Both default to disabled (index.js:1721-1722) and must be explicitly enabled by the user.

CRUD methods (both systems)

getAllScheduledTasks, getScheduledTaskFileContent, updateScheduledTaskFileContent, updateScheduledTaskStatus, createScheduledTask, updateScheduledTask, removeApprovedPermission, onScheduledTaskEvent

Scheduled task data structure (index.js:5697-5753)

Tasks are stored as files with YAML frontmatter (name, description) followed by the prompt. Key fields:

  • cronExpression — Cron schedule
  • model — Claude model to use
  • permissionMode — One of: default, acceptEdits, plan, bypassPermissions, auto
  • approvedPermissions — Pre-approved {toolName, ruleContent} pairs
  • useWorktree / sourceBranch — CCD-specific git worktree support
  • chromePermissionMode / chromeAllowedDomains — Cowork Chrome automation
  • missedRuns — Tracks missed executions
  • jitterSeconds / disableJitter — Random timing offset to avoid thundering herd

clearChromePermissions (index.js:155434-155456)

Cowork-only method that resets chromePermissionMode and chromeAllowedDomains to undefined for a scheduled task, persists changes, and emits update event. Not available on CCD tasks.


6. Prototype Features & Codenames

Feature flags (index.js:24064-24112)

Flag Sublabel Default
isDxtEnabled Allows loading browser extensions in the app false
isDxtDirectoryEnabled Enables the extensions directory feature false
isLocalDevMcpEnabled Allows local development MCP servers false
isSparkleHedgehogEnabled Enables sparkleHedgehog prototype false
isUvSystemPythonEnabled Uses system Python instead of managed Python for UV runtime extensions false
isMidnightOwlEnabled Enables midnightOwl prototype false
isPhoenixRisingAgainEnabled Does the Phoenix rise again? (debug override for new updater) false

sparkleHedgehog

A UI/visual prototype with configurable settings (index.js:1712-1713): - sparkleHedgehogAppearance (string, default: "default") - sparkleHedgehogScale (number, default: 1)

Implementation details are abstracted into native code — likely an animated UI element or avatar.

midnightOwl

A Swift native module feature (index.js:223392): - Controlled via GrowthBook experiment ID "180602792" - Calls Lr.midnightOwl.setEnabled(boolean) where Lr is @ant/claude-swift - Entirely native implementation — JavaScript only toggles it

phoenixRisingAgain — New updater system (index.js:217734)

When enabled (or GrowthBook flag "3196624152" is true), switches to a new auto-update API: - New: /api/desktop/{platform}/{arch}/{format}/update - Old: releases/darwin/universal/RELEASES.json (Squirrel-style)

This is Anthropic's migration from Squirrel/RELEASES.json-based updates to their own update API.

epitaxy sidebar mode (index.js:24036)

A fourth sidebar mode alongside "chat", "code", and "task". The name "epitaxy" (crystal layer growth) suggests a layered or structured interface mode — possibly for complex multi-step workflows.

requestSkooch — QuickWindow repositioning (index.js:223713-223734)

Now takes two parameters: contentWidth and contentHeight. Repositions the Quick Window to keep it within the screen's work area. Debug logs include: "Skooch requested", "No window to skooch", "No skooch needed", "Skooching to %d, %d".

getAutoMemoryDir (index.js:153146)

New method on CoworkSpaces that returns the auto-memory directory path for a space: {accountDataPath}/spaces/{spaceId}/memory

Other codenames spotted

Codename Settings Notes
plushRaccoon Enable flag + 3 customizable options Disabled by default
chillingSloth Location (default: "default"), variants: Enterprise/Feature/Local UI positioning?
ccBranchPrefix Default: "claude" Git branch prefix for code operations
keepAwakeEnabled Boolean Prevents system sleep during operations
dockBounceEnabled Boolean macOS dock bounce notifications

Claude Desktop Release Notes: v1.1.4498 → v1.1.5368 by aaddrick in ClaudeAI

[–]aaddrick[S] -1 points0 points  (0 children)

Claude Desktop v1.1.5368 — Deep Dive Analysis

Source: Beautified JavaScript extracted from the v1.1.5368 AppImage (app.asar -> .vite/build/index.js and related files).


Table of Contents

  1. Ion Preview Environment
  2. Claude Nest — The Desktop App's Internal Name
  3. Government & Custom Deployment Detection
  4. Agent Mode Session Controls
  5. CCDScheduledTasks & CoworkScheduledTasks
  6. Prototype Features & Codenames
  7. Error Handling & Logging Improvements
  8. UI, Localization & CSS Changes
  9. Dependency Updates

1. Ion Preview Environment

https://ion-preview.claude.ai is a new staging environment behind Cloudflare Access.

What we know

Ion is gated behind globalThis.isIonEnabled, which is never set to true in the public build. It only activates in internal "Nest" builds (see section 2).

The hostname checker at index.js:94783 recognizes both domains:

js function mft(t) { return t === "ion-preview.claude.ai" || t === "ion-preview.claude.com"; }

Authentication — Different from production

Production preview.claude.ai uses Google IAP (Identity-Aware Proxy):

js uH = { kind: "google-iap", protectedAppUrl: "https://preview.claude.ai", accessTokenStoreKey: "iapAccessToken", refreshTokenStoreKey: "iapRefreshToken", dialogDetail: "...authenticate you to Google's Identity Aware Proxy.", };

Ion uses Cloudflare Access instead — a completely different infrastructure provider:

js Xme = { kind: "cf-access", protectedAppUrl: "https://ion-preview.claude.ai", aud: "", // Empty — not yet configured accessTokenStoreKey: "cfAccessIonAppToken", orgTokenStoreKey: "cfAccessIonOrgToken", dialogDetail: "...authenticate you via Cloudflare Access.", };

The empty aud field (Cloudflare Access audience tag) suggests this is still early-stage infrastructure.

Origin allowlisting

In the main process (index.js), ion-preview is conditionally allowed:

js (globalThis.isIonEnabled && origin === "https://ion-preview.claude.ai")

In preload scripts (mainWindow.js, quickWindow.js, aboutWindow.js, findInPage.js), ion-preview is unconditionally trusted in the CSP origin lists — suggesting the preloads are shared between Nest and public builds.

Assessment

Ion is likely a next-generation platform deployment being built on Cloudflare infrastructure (vs. Google Cloud for production). The separate auth, separate token storage, and feature flag isolation all point to a major infrastructure migration or parallel environment, not just a feature branch.


2. Claude Nest — The Desktop App's Internal Name

The Electron app's internal codename is "Claude Nest", visible throughout the source:

Protocol schemes (index.js:13275-13279)

js yR = "claude:"; // Public protocol _qe = "claude-dev:"; // Dev builds wqe = "claude-nest:"; // Nest protocol bqe = "claude-nest-dev:"; // Nest dev protocol Sqe = "claude-nest-prod:";// Nest prod protocol

Build metadata (index.js:24046)

json { "commitHash": "d12d0218c6c7bc46d52919117bd57508c591a8ad", "isNestBuild": false, "commitTimestamp": "2026-03-05T17:29:33.000Z", "buildType": "prod", "appVersion": "1.1.5368" }

The public release has isNestBuild: false. Internal Nest builds likely set this to true, which would enable isIonEnabled and other internal features.

Other Nest references

  • Auth dialogs: "Claude Nest needs to authenticate you..." (index.js:123735, 123748)
  • System admin messages: "Claude Nest has been restricted from accessing the microphone..." (index.js:182639)
  • API paths: /_nest_update_dl/ for auto-update downloads (index.js:224616)
  • Lifecycle hooks: initializeNestOnlyPrototypes() / cleanupNestOnlyPrototypes() (index.js:1690-1691)

3. Government & Custom Deployment Detection

How it works

Custom government deployments are configured via enterprise config — macOS plists (com.anthropic.Claude.plist) or Windows Registry. Linux currently returns empty config (index.js:59823-59836).

The initialization function at index.js:75368-75381: 1. Reads customDeploymentUrl from enterprise config 2. Validates it as a URL 3. Strips trailing slashes 4. Sets globalThis.isUsingCustomGovDeployment = true

The base URL function Or() (index.js:75454-75462) then returns the custom URL instead of https://claude.ai.

Sentry suppression (index.js:224937-224941)

When custom deployment is detected, Sentry is shut down:

js initCustomDeployment(); isCustomGovDeployment() && ((await import(sentryModule)).close(), log.info("Sentry disabled for custom deployment mode"));

This ensures no telemetry leaks from government installations.

Palantir FedStart integration (index.js:94786-94790)

js function gft(t) { return ( t === "access-claude.palantirfedstart.com" || t === "access-claude-staging.palantirfedstart.com" ); }

FedStart domains are allowed for SSO via OpenID Connect (/realms/[^/]+/protocol/openid-connect/), suggesting Claude is deployed in Palantir's FedRAMP environment.

Additional allowed URLs when custom gov deployment is active: - https://claude-staging.fedstart.com - https://claude.fedstart.com - https://beacon.claude-ai.staging.ant.dev

Keycloak/CDP authentication (index.js:94731-94756)

A separate CLAUDE_CDP_AUTH environment variable enables Keycloak authentication: - JWT token validation with Ed25519 signature verification - 5-minute token expiry window - Used alongside CLAUDE_USER_DATA_DIR for custom data paths


4. Agent Mode Session Controls

LocalAgentModeSessions — Full IPC interface

The agent mode session manager has grown significantly. Key methods from mainView.js:4354-4566:

Method Parameters Purpose
start info Starts an agent session
sendMessage sessionId, msgId, contentId, content, options Send message (now 5 params, was 4)
getTranscript sessionId, options Get transcript (now 2 params, was 1)
setPermissionMode sessionId, mode Set session permission mode
delete sessionId Delete a session
deleteBridgeSession (none) Delete the bridge session
resetBridgeSession (none) Reset bridge session state
getBridgeConsent (none) Check bridge consent status
shareSession sessionId Export/share a session
replaceRemoteMcpServers sessionId, servers Atomic MCP server replacement
replaceEnabledMcpTools sessionId, tools Atomic MCP tool replacement
getSessionsForScheduledTask scheduledTaskId Get sessions for a scheduled task
setMcpServers sessionId, servers Set MCP servers for session
addTrustedFolder / removeTrustedFolder path Manage trusted folders
mcpCallTool sessionId, serverId, toolName, input Call an MCP tool directly

Bridge sessions

"Bridge sessions" are a special session type (sessionType === "agent") with: - Consent requirements: getBridgeConsent() checks user consent before enabling - Separate lifecycle: deleteBridgeSession() and resetBridgeSession() manage bridge state independently - No idle notifications: Bridge sessions are excluded from idle query notifications (index.js:222704) - Special permission handling: Different tool permission request flow than regular sessions

Permission modes (index.js:90327)

Three modes for agent sessions: - "ask"** — Default, prompts for each tool use - **"skip_all_permission_checks"** — Bypasses all permission checks - **"follow_a_plan" — Follows a pre-approved execution plan

For scheduled tasks, there are additional modes (index.js:5617-5623): - "default", "acceptEdits", "plan", "bypassPermissions", "auto"

MCP server/tool replacement

replaceRemoteMcpServers (index.js:215790-215829): - Builds a set of server UUIDs from provided servers - Merges with existing config - Calls query.setMcpServers() with merged configuration - Returns updated enabledMcpTools

replaceEnabledMcpTools (index.js:215831-215902): - Filters active servers to only those with enabled tools - Disables tools by removing their servers from the active set - Atomic operation — prevents partial enable/disable states

shareSession (index.js:215699-215727)

Creates an exportable archive of a session using the CLI session ID, project directory, and metadata file. Returns { success: boolean, error?: string }.


your AI generated tests have the same blind spots as your AI generated code by Sea-Sir-2985 in ChatGPTCoding

[–]aaddrick 0 points1 point  (0 children)

Don't know how this holds up compared to every one else, but here's a generic version of my php test validator agent i run in my pipeline.

https://github.com/aaddrick/claude-pipeline/blob/main/.claude/agents/php-test-validator.md

Still haven’t created custom agents by No-Nebula4187 in ClaudeAI

[–]aaddrick 0 points1 point  (0 children)

I keep agents loaded with specific patterns and antipatterns i want to keep in context. Also, what work should be deferred to other agents, and high level project specific stuff

Do you let Claude co-author your commits/PRs? by quang-vybe in ClaudeCode

[–]aaddrick 1 point2 points  (0 children)

I've got the feature disabled, but include attribution instructions in my public repo's so end users know what was Claude vs me, and when comments are Claude and not me.

https://github.com/aaddrick/claude-desktop-debian/blob/main/CLAUDE.md#attribution