Update Project
Refresh project-local Codex Copilot wiring in place.
Workflow
- Run
scripts/update-project.sh --project <path>. Unless--framework-rootis given explicitly, it syncs from the pinned mirror (~/.copilot/mirrors/codex-foundationby default) rather than wherever the framework repo happens to be checked out, so a project is never synced ahead of any released version. It updates an EXISTING install; if the project has never been set up, it exits and points at$setup-project/scripts/setup-project.shinstead. - Every framework-owned file under
plugins/codex-copilot/, plusscripts/copilot-gate.sh, is discovered and compared by content (sha256), not by declared version, so new hook assets and drift that does not match a released version are repaired too. - A file marked
ownership: project-- viaowner: projectYAML frontmatter in the file itself, or acopilot.lock.jsonentry -- is never touched. Confirm the report's "Preserved" section lists exactly the paths a human intentionally customized. AGENTS.md,SOUL.md,docs/40-initiatives/,.agents/plugins/marketplace.jsonare never touched by the updater;.codex-copilot.jsononly has its framework-tracking fields merged (projectName/pluginPathpreserved).- Idempotent: run it twice to confirm the second run reports "no changes needed." Use
--dry-runto preview without writing. - Validate with
cc skill list,cc docs sources,cc memory check --json, andtc progress --jsonwhen available. - If optional packs are needed, activate them with
scripts/activate-pack.pyinstead of copying pack files manually.
Output
- files updated / added / unchanged / preserved / retired (from the script's report)
- skill symlink and
.codex-copilot.jsonstatus copilot.lock.jsonwrite confirmation- idempotence check (second run == no changes needed)