# 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