The distinction matters. A Git repository is mounted data, a Skill is
versioned instructional content, and a Tool is an action the Agent may call.
Putting all three behind a generic “context” switch would hide different
permission, retention, and reproducibility rules.
Files and projects
Use a File mount for one uploaded file and a Project for a file tree or Git repository. Both resolve through the same mount machinery: destinations cannot overlap, staged bytes are digest-verified, andsession.mounts_resolved records what a Run actually received.
Projects add immutable revisions. A mount may pin one revision or follow
latest; latest resolves to a concrete revision again before each Run.
Writable overlays remain disposable unless a Git-backed Project explicitly
enables pull-request writeback. GitHub is therefore one provider-specific path
through Projects and governed Connections, not a
separate context system.
A Git Project also announces D54-valid Skills found exactly at
.claude/skills/<name>/SKILL.md in the resolved revision. They stay at their
repository paths and never become catalog Skills or release pins. When the
Agent has its built-in read tool, the prompt points to the generated read-only
index at /environment/.checkfu/repository-skills.md; without read, no
pointer is added. Mounting the repository admits those instructions into the
Agent’s trust boundary, so review that directory for repositories that accept
outside contributions. Nested, rootless, and package-local layouts are not
announced.
For a new Session, pass repositories, files, and Memory stores through CMA’s
single resources[] request field. Each Session owns that admitted resource
selection; there is no separate reusable SessionTemplate resource or live
configuration link.
See Session mounts for the wire shapes and
Projects for upload, Git, and writeback behavior.
Memory
Memory is durable, governed knowledge that can outlive any one Session. A mount requestsread_only or read_write access; admission
clamps that request against the acting Principal’s PermissionAssignments. The access ceiling is
fixed for the Session, while the contents are read again for each Run.
Memory is not hidden conversation history. Stores and revisions are addressable,
access is explicit, and writeback settles through its own durable lifecycle.
Context windows and condensation
The Session event log remains the durable record even when a model cannot read the entire history in one request. Checkfu bounds model input without rewriting that record:- request-time compaction follows the published Agent version’s
compaction_policyand the admitted model route’s context window; - between turns, structural condensation can replace an older conversational prefix with an explicit elision marker while retaining the newest tail;
session.compactedandsession.context_condensedmake both boundaries observable.
GET /v1/sessions/{id}/ledger reports current and cumulative context tokens,
loaded Tool and Skill references, compactions, and condensations without
returning prompts or messages. Use the context ledger guide
when you need to explain what was loaded and what it cost.
Next steps
Projects
Mount uploaded files or Git repositories and control revision and writeback behavior.
Memory
Give Agents durable knowledge with explicit ownership, PermissionAssignments, and version history.
Sessions and Runs
See when identity freezes, when mounted data resolves, and how each turn settles.
Tools and integrations
Keep callable capabilities distinct from files and instructions.