# Claude Code - Plugins, Settings, and Scheduled Tasks Claude Code splits plugin state across an install registry and enable flags, and splits configuration across scopes and independent runtimes. Knowing which layer owns a symptom explains most "it disappeared" cases. Scheduled Claude Desktop tasks run unattended, so permissions, file access, and concurrency must be arranged before the first scheduled run. ## Key points - Plugins use a two-layer activation model: installed in `installed_plugins.json` versus enabled in `settings.json`. The installer writes the registry but does not set the enabled flag. - `claude plugin install` is the install verb. A marketplace `add` verb does not exist, and plugin toggles update automatically on install. - Independent runtimes have separate plugin discovery. Skills installed for one runtime are not visible to the other. - `showThinkingSummaries: true` in `~/.claude/settings.json` prevents the `redact-thinking` beta header from stripping thinking text from API responses. - `claude --continue` resolves the most recent session by directory, so each unique worktree maps to exactly one session. - Transcript name-matching is blind to UUID-keyed remote HTTP servers and to passive plugins that make no tool calls. The plugin-usage counter is the authoritative signal. - `paths:` frontmatter gates `@`-imported memory files through the include code path. `globs:` and `alwaysApply:` belong to a different editor, and `paths: ["**"]` means always-load. - A plugin orphaned from both the skills lockfile and the plugin registry has no standard uninstall path. Move it to an archive directory. - A shared marketplace clone plus an mtime-fresh stamp lets sessions race: a late stamp write makes another session skip fetching a changed commit. Recording the checked-out commit in the stamp turns the mismatch into one refetch. - Track skills with `npx skills add`, not ad-hoc symlinks. The next install overwrites ad-hoc symlinks. A relative path is parsed as a GitHub repo, so pass absolute paths. ### Scheduled tasks in Claude Desktop - Scheduled tasks fire only while the app is open. A missed run fires at the next launch. One manual "Run now" pre-approves connector permissions. - Approvals granted during a manual run are stored on the scheduled task and reused. Without pre-approval, the unattended run stalls on a permission prompt. - Scheduled-task SKILL.md files are live documents an agent can edit in place. The edit takes effect on the next scheduled run. - Prohibition clauses get over-read. "Do not recreate or update that artifact" was read as "do not mention it either", and a live dashboard vanished from reports. Make surfacing mandatory and add a health check. - File access is asymmetric: Read and Write reject paths outside connected folders while Glob still lists the tree, so the folder looks available. - Two tasks that both find no log file both create it from the skeleton, and the second write wipes the first task's section. Append-own-block, not re-read-before-append, keeps the log intact. - Re-read state immediately before each write and verify every report line against the logbook. A tag write changed an item completed earlier that day, and the report still listed it open. - When a verification tool fails to load, report the item as unchecked and move unverifiable claims into a cannot-verify list. - Overflow scheduling needs a burn-rate model measured in completions per weekday, not a someday dump. Fill forward a few items per day. - Artifact pages block `fetch()` to any outside host. Move third-party API calls into a local job whose output file the page reads. - Doc export to Google Docs covers the open tab only and does not stay in sync. Export again after edits and check that diagrams survived. ### Codex configuration - Codex has no native always-start-in-plan-mode switch. Enforce it through AGENTS.md instructions or profile-scoped prompts, not a `config.toml` key. - Validate a Codex config without a live session by running the static and symlink validation scripts directly. - Keep config validators in sync with the `config.toml` schema. Profile key changes silently break a validator that lacks a missing-key guard. ## How to apply 1. Install plugins with `claude plugin install`, then confirm the enabled flag in `settings.json`. 2. Install skills with `npx skills add` and absolute paths. 3. Pre-approve scheduled-task permissions with one manual "Run now" before the first unattended run. 4. Give each concurrent task its own block in a shared log file. 5. Re-read state before each write, and verify every report line against the logbook. 6. Move third-party API calls out of artifact pages into a local job. ## Observations - [plugins] Installed and enabled are separate plugin states. The installer writes only the registry. #plugins (source: agent sessions, 2026-03) - [scheduling] Tasks fire only while the app is open. A manual "Run now" stores approvals for unattended runs. #scheduled-tasks (source: agent sessions, 2026-09) - [scheduling] Read and Write reject paths outside connected folders while Glob still lists the tree. #scheduled-tasks (source: agent sessions, 2026-09) - [concurrency] Append-own-block keeps a shared log intact when concurrent tasks race. #concurrency (source: agent sessions, 2026-11) - [agents] Re-read state before each write, and keep a cannot-verify list when a tool fails to load. #agents (source: agent sessions, 2026-11) - [web] Artifact pages block `fetch()` to outside hosts. Move API calls into a local job. #web (source: agent sessions, 2026-11) - [codex] No `config.toml` key starts plan mode. Enforce it through instructions. #codex (source: agent sessions, 2026-04) - [codex] Keep config validators in sync with the `config.toml` schema. Missing keys break them silently. #codex (source: agent sessions, 2026-06) ## Relations - relates_to [[resources/documentation/Agents/Agents - Guards, Hooks, and Security Boundaries]] (unattended-run permission pre-approval) - relates_to [[resources/documentation/Agents/Agents - MCP Server Onboarding and Credentials]] (remote servers keyed by connector UUID) - relates_to [[resources/documentation/Agents/Agents - Worktree Workflows and Pre-PR Review]] (one worktree, one `--continue` session) - relates_to [[resources/documentation/Agents/Agents - Gmail, Slack, and Google Docs Quirks]] (Google Docs export covers the open tab only) ## Sources Personal agent-session notes, March 2026 to November 2026