Claude Code 2.1.275 started syncing the skills and plugins enabled on your claude.ai account into terminal sessions. Check what arrived, and opt out if it is not yours.
The 8-28 audit shelved fifty skills to cut per-session context load. A sync can quietly put unaudited ones back. You are on 2.1.276; 2.1.278 is current.
Every skill loaded into a session costs tokens on every turn, whether or not it fires. That is why the roster is curated and why the skill-addition rule says read the SKILL.md and scripts first. Since 2.1.275, signing in with a Claude account also pulls in whatever skills and plugins are enabled on claude.ai - a second source of context you did not choose at the terminal.
Two settings switch it off: syncClaudeAiSkills: false and syncClaudeAiPlugins: false in ~/.claude/settings.json. Edits to a synced skill are not saved back to the account; the tool result says so. The ListPlugins tool lists account plugins, not the ones installed with /plugin.
Two other lines in this window touch your headless jobs. 2.1.277: claude -p sessions that could hang with no result after an internal error now report the error and exit 1 - the watchdog wrappers already treat a non-zero exit as failure, so this turns a silent hang into a logged one. Also 2.1.277: headless start-up no longer waits on the per-directory CLAUDE.md lookup. 2.1.274 fixed claude agents losing --model and --effort after an auto-update relaunch.
Compare what a session sees with what is on disk, then opt out.
claude --version
ls ~/.claude/skills | grep -v _shelved | wc -l
# inside a session: /skills
# opt out (merge into the existing JSON, do not replace it)
python3 - <<'PY'
import json,pathlib
p=pathlib.Path.home()/'.claude/settings.json'; d=json.loads(p.read_text())
d['syncClaudeAiSkills']=False; d['syncClaudeAiPlugins']=False
p.write_text(json.dumps(d,indent=2)+'\n'); print('written')
PY
Context you did not choose is still context you pay for every turn.