CertSafari
    CLAUDE-CERTIFIED-DEVELOPER-FOUNDATIONS-CCDV-F · Lessons

    Domain 2 · Lesson 8/25

    Claude Plugin Management and Session Hygiene Across Surfaces

    Claude Application Design

    8 min read
    5.52% of exam
    3 sources
    Published 29 Sep 2026
    Docs as of 26 Sep 2026

    What you will be able to do

    • Explain how plugins are installed and loaded in the terminal, claude -p, the Agent SDK and claude.ai
    • Choose a plugin scope and predict which settings file it writes and what collaborators still have to do
    • Account for the per-turn context cost of an enabled plugin and choose between disabling and uninstalling it
    • Predict what a resumed session restores and what it doesn't, and name sessions so they can be resumed reliably

    1.One plugin, several surfaces

    A plugin bundles several kinds of capability. It can include skills (SKILL.md instructions that Claude loads when relevant), subagent definitions Claude can hand work to, hooks that run at points in Claude Code's lifecycle, and MCP servers. How a plugin reaches Claude depends on the surface you work in, and the differences are easy to overlook when you move a workflow from one surface to another.

    How plugins are installed and loaded on each surface
    SurfaceHow plugins arrive
    Terminal, Desktop app, VS Code, Cloud sessionInteractive install through /plugin
    claude -p and other non-interactive runs/plugin is unavailable, but plugins you already installed still load. Manage them with claude plugin commands
    Agent SDKLoaded through the SDK's plugin option
    claude.ai account or organizationSynced into Claude Code in the background and listed as <name>@synced

    Syncing goes one way only. Plugins you turn on in claude.ai appear in Claude Code, but plugins you install locally never go up to your claude.ai account. A script that installs from the official marketplace on a new machine must first run claude plugin marketplace add anthropics/claude-plugins-official, because that marketplace isn't registered until someone opens an interactive session. These sources cover plugin delivery across surfaces. They don't document how system prompts differ between the API, Desktop and claude.ai.

    Sources1

    2.Plugin scope, context cost and removal

    Plugin install scopes and the settings file each one writes
    ScopeEnabled forEntry written to
    UserYou, in every project on this machineenabledPlugins in ~/.claude/settings.json
    ProjectEveryone who works in this repository.claude/settings.json (committed)
    LocalYou, in this repository only.claude/settings.local.json

    Project scope enables a plugin for your collaborators but doesn't install it on their machines. Each of them still runs claude plugin install <name>@<marketplace> --scope project once. An enabled plugin also costs context even when you never use it. The name and description of every skill, agent and command Claude can invoke on its own are sent on every turn. The full text loads only when the item is used. Plugins in the official marketplace show both token estimates, per turn and when invoked, before you install. And a plugin's actions run with your permissions.

    Plugins load at startup or on /reload-plugins. If a reload would invalidate the prompt cache, Claude Code warns you and leaves the plugin pending. /reload-plugins --force activates it anyway, at the cost of one uncached request. To stop a plugin without removing it, disable it. On a project-scope plugin, pressing y writes false to your .claude/settings.local.json only, while u removes the plugin for everyone. Uninstalling a plugin leaves its auto-installed dependencies in place until you run claude plugin prune.

    An agent has already analyzed a codebase's authentication module in an existing session and produced a JWT-based migration plan. The team now wants to explore an alternative OAuth2-based approach in a separate line of investigation without losing the ability to continue the original JWT-focused thread later. Which approach satisfies both goals?

    Sources21

    3.What a resumed session brings back

    Ways to resume a Claude Code session
    CommandWhat it does
    claude --continueReopens the most recent conversation in the current directory
    claude --resumeOpens the session picker
    claude --resume <name>Resumes the named session directly
    claude --from-pr <number>Opens the session picker filtered to sessions linked to that pull request
    /resumeSwitches to a different conversation from inside an active session

    Neither of them runs again. A resumed session restores the full conversation history, including tool calls and their results, but background Bash and monitor tasks aren't restored. A tool that was cut off neither finishes nor reruns. Claude sees it marked as interrupted and is told to check whether it took effect before trying it again. Scheduled tasks that haven't expired and an active goal do carry over. The session keeps its model, unless a --model flag or an ANTHROPIC_MODEL-family variable chooses one at launch, or that model has been retired. The permission mode is restored when you resume from a terminal. It isn't restored when you use the session picker or /resume, and a claude -p resume starts in the mode a new claude -p run would use.

    Sources3

    4.Naming and compacting sessions

    A session is only easy to get back to if you can find it again. Name it at startup with claude -n auth-refactor, or during the session with /rename. The default display name, such as my-app-3f, only identifies a session in listings and can't be used to resume it. If you don't name a session, a Haiku-class model generates a title from your first prompt. That title does work with --resume. A claude -p run started from a script never gets a generated title, so name any scripted sessions you'll want to resume.

    Long histories cost tokens each time they are replayed. When you resume a session, you can choose Resume from summary. That runs /compact straight away and replaces the history with a summary, your most recent exchanges, and up to five recently read files. The alternative, Resume full session as-is, reprocesses and re-caches the entire history after your first message.

    A developer defines a JSON Schema for an agent's `outputFormat` describing a deeply nested object with many required fields spanning several levels. In testing, most runs end with a `structured_output` field missing and the result message's subtype set to `error_max_structured_output_retries`, even though the underlying task usually succeeds. Which two changes are most likely to reduce these structured-output failures? (Select 2)(Select 2)

    Sources3

    Exam traps

    Each one states something that sounds right. Open it to see what is actually true.

    1. 1.Committing a project-scope plugin entry to .claude/settings.json installs the plugin for every collaborator.Why is that wrong?

      The committed entry only enables the plugin. Each collaborator still runs claude plugin install with --scope project once on their own machine.

      Covered in Plugin scope, context cost and removal

    2. 2.An enabled plugin you never invoke costs nothing.Why is that wrong?

      The name and description of each skill, agent and command Claude can invoke on its own are in context on every turn. They count toward your usage and take up room in the context window.

      Covered in Plugin scope, context cost and removal

    3. 3.Resuming a session brings back everything that was running, including background shell tasks.Why is that wrong?

      Scheduled tasks that haven't expired are restored. Background Bash and monitor tasks are not.

      Covered in What a resumed session brings back

    Practise it for real

    Install a plugin at project scope, check its footprint, and turn it off without uninstalling it

    1. 1.In an interactive session, run /plugin install commit-commands@claude-plugins-official

      Why: Naming the marketplace opens the details pane that shows the context cost estimates

      You should see: A 'Will install' list and two Context cost estimates: every turn and when invoked

    2. 2.Choose 'Install for all collaborators on this repository'

      Why: Project scope enables the plugin for the team through a committed file

      You should see: An entry in .claude/settings.json, and a summary saying Active now, Reload needed or Load failed

    3. 3.In your shell, run claude plugin list

      Why: Confirms the plugin is present and shows its scope without opening a session

      You should see: The plugin listed with Version, Scope and Status lines

    4. 4.Run claude plugin disable for the plugin

      Why: Disabling stops its per-turn context cost and keeps it installed

      You should see: The plugin stays installed but no longer loads

    Stuck? Get a nudge

    If the install summary says Reload needed, run /reload-plugins. It warns you instead of reloading if the reload would invalidate the prompt cache.

    Sources

    Every claim above is drawn from one of these pages, quoted as it was written on the date shown.

    1. 1.
      “Agent SDK: load plugins through the SDK’s plugin option.”
      ↩︎ One plugin, several surfaces
      “Plugins you already installed do load.”
      ↩︎ One plugin, several surfaces
      “plugins you install with /plugin or claude plugin install stay on this machine and aren’t added to your claude.ai account.”
      ↩︎ One plugin, several surfaces
      “If the reload would invalidate the prompt cache, it warns and leaves the plugin pending instead.”
      ↩︎ Plugin scope, context cost and removal
      “Uninstall: auto-installed dependencies stay until you run claude plugin prune in your shell”
      ↩︎ Plugin scope, context cost and removal
      “Committing that entry turns the plugin on for your collaborators but doesn’t download it to their machines”
      ↩︎ Exam trap 1
    2. 2.
      “The full text of a skill or agent loads only when it’s used.”
      ↩︎ Plugin scope, context cost and removal
      “Permissions: what the plugin runs, it runs as you.”
      ↩︎ Plugin scope, context cost and removal
      “Those tokens count toward your usage and leave less room in the context window even in sessions where nothing from the plugin runs.”
      ↩︎ Exam trap 2
    3. 3.
      “Conversation history: the full history, including tool calls and results.”
      ↩︎ What a resumed session brings back
      “Claude sees the call marked as cut off before its result was recorded”
      ↩︎ What a resumed session brings back
      “/resume inside a session, with or without an argument: Claude Code doesn’t restore the stored permission mode.”
      ↩︎ What a resumed session brings back
      “The default isn’t a resume handle.”
      ↩︎ Naming and compacting sessions
      “A claude -p run you start directly from a shell or script doesn’t get one.”
      ↩︎ Naming and compacting sessions
      “Resume from summary: runs /compact immediately.”
      ↩︎ Naming and compacting sessions
      “Scheduled tasks: tasks that haven’t expired are restored. Background Bash and monitor tasks aren’t.”
      ↩︎ Exam trap 3

    Ready to test yourself?

    Practise the 20 questions on this subdomain.