{"training":{"id":"T-PROVENANCE-1","slug":"skills-that-update-themselves","title":"Skills that update themselves","policyId":"P-PROVENANCE","minutes":3,"version":1,"lang":"en","assignment":{"happened":"On {date}, {agent} on {device} loaded {component} at a version nobody pinned; {blocked}.","matters":"A {minutesWord} training shows how an update can change what a skill or server does on your machine, and how to keep the version you reviewed."},"lesson":[{"id":"what-happened","heading":"What happened on {device}","body":["On {date} at {time}, {agent} on {device} loaded {component} during a session: {session}. qcontrol recorded it as: {evidence}.","{pinnedSentence} The policy {policy} recorded a finding. {outcome}"],"illustration":{"scene":"version-load","alt":"{agent} on {device} loads {component} at a version that is not on the pinned list.","animated":true}},{"id":"new-version","heading":"Why a new version matters","body":["A skill or an MCP server runs with your agent's access: the files it can read, the commands it can run, the services it can reach.","Each new version is new code, and whoever publishes it decides what it does. An update can add a step nobody reviewed, such as reading key files or sending something out, and its release notes need not say so."],"illustration":{"scene":"version-trust","alt":"The version your team reviewed, and the next one, which does whatever its publisher wrote, with your agent's access."}},{"id":"what-qpoint-does","heading":"What Qpoint does about it","body":["When a skill or server loads, qcontrol checks its version against the pinned list: {pinned}. A version that is not on the list is a finding.","The check records and cannot stop the load. Other policies can stop what a new version does, when they are at Enforce: reading restricted files, sending keys in a prompt, running a tool that is not allowed."],"illustration":{"scene":"mode-observe","alt":"{agent} on {device} carries on, and qcontrol records a finding beside it.","animated":true}},{"id":"instead","heading":"What to do instead","body":["Install skills and servers at a fixed version, not the latest, so an update waits for you. Read what a new version changes before you take it.","When you need a new version, ask {owner} to review it and add it to the pinned list.","If a version nobody reviewed has already run, tell {owner} what it did. If it read key files, treat those keys as disclosed and replace them."],"illustration":{"scene":"pin-version","alt":"Install the version your team reviewed; a new one waits until {owner} has looked at it."},"instead":true}],"check":[{"id":"q-decides","prompt":"A skill you use every day publishes a new version overnight. What decides what it does in your next session?","choices":[{"id":"a","text":"The version your team reviewed last month"},{"id":"b","text":"Whoever published the new version","right":true},{"id":"c","text":"Your agent, which checks each new version"}],"explain":"Each version is new code. Whoever published it decides what it does, with your agent's access.","stepId":"new-version"},{"id":"q-stop","prompt":"qcontrol recorded a skill loading at a version nobody pinned. What did that stop?","choices":[{"id":"a","text":"The skill, which did not load"},{"id":"b","text":"Every tool call the skill made"},{"id":"c","text":"Nothing on its own; it records the version that loaded","right":true}],"explain":"The version check records and cannot stop the load. Policies on what the skill does, at Enforce, can stop it from reading key files or sending them out.","stepId":"what-qpoint-does"},{"id":"q-update","prompt":"Your agent offers to update a server to its latest version. What do you do?","choices":[{"id":"a","text":"Keep the reviewed version, and ask {owner} to review the new one","right":true},{"id":"b","text":"Update it; a newer version is safer"},{"id":"c","text":"Update it, and read the release notes afterwards"}],"explain":"Keep the version your team reviewed, and ask {owner} to review the new one before you take it.","stepId":"instead"},{"id":"q-ran","prompt":"A skill version nobody reviewed has already run and read your key files. What do you do?","choices":[{"id":"a","text":"Remove the skill; nothing else is needed"},{"id":"b","text":"Tell {owner} what it did, and replace the keys","right":true},{"id":"c","text":"Wait to see whether the keys are used"}],"explain":"Keys a skill has read may have left your machine. Tell {owner} what it did, and replace the keys.","stepId":"instead"}],"contact":{"owner":"{owner}","how":"Contact IT from the message that brought you here, or reply to it; the replies reach {owner}."},"library":{"lesson":[{"id":"what-happened","heading":"What happens when a skill or server updates","body":["Your agent on {device} loads skills and MCP servers as it works. qcontrol sees which version loads and checks it against the pinned list.","When a version that is not on the list loads, the policy {policy} records a finding."],"illustration":{"scene":"version-load","alt":"{agent} on {device} loads a skill at a version that is not on the pinned list.","animated":true}}],"check":[]}},"version":1,"contentHash":"sha256:d5695a3aee631ffc6373b17cd6e6350a260fe30ea56cb3833fa5dc31812279a2","slots":["agent","blocked","component","date","device","evidence","minutesWord","outcome","owner","pinned","pinnedSentence","policy","session","time"],"path":"app/data/trainings/en/skills-that-update-themselves.md"}