Tracking modes
tl;dr
Crosslink enforces issue tracking at three levels. You set the mode once; agents are automatically held to it on every action.
How it works
You configure:
Set tracking_mode in .crosslink/hook-config.json to control how strictly agents must track their work.
→
Agents experience:
- strict — blocked from editing without an active issue
- normal — reminded but allowed to proceed
- relaxed — no enforcement, only git mutation blocks
Mode comparison
| Mode | Hook Behavior | Best For |
|---|---|---|
| strict | Blocks Write/Edit/Bash without an active issue | Teams that want every change tracked |
| normal | Reminds but allows proceeding without an issue | Balanced tracking without blocking quick fixes |
| relaxed | No enforcement — only git mutation blocks | Users who want tracking opt-in only |
Setting the mode
Edit .crosslink/hook-config.json:
{
"tracking_mode": "strict"
}Changes take effect on the next prompt.
What’s always enforced
Regardless of tracking mode, these are always blocked:
- Git mutations:
git push,git merge,git rebase,git reset,git stash,git tag, etc. - These are human-only operations. Agents should never push code without explicit instruction.
Gated (require an active crosslink issue):
git commit— allowed only when the agent has an active work item viacrosslink session work <id>or the/commitskill.
Read-only git commands (git status, git diff, git log, git show, git branch) are always allowed.
Strict mode
File: .crosslink/rules/tracking-strict.md
The hook checks if the agent has an active work item (crosslink session work <id>). If not, all Write, Edit, and Bash operations are blocked. The agent must create an issue first:
crosslink quick "describe the work" -p medium -l featureThis is the recommended mode for teams and production codebases.
Normal mode
File: .crosslink/rules/tracking-normal.md
Same check, but the hook reminds the agent instead of blocking. Operations proceed with a gentle nudge to create an issue. Good for solo developers who want tracking most of the time.
Relaxed mode
File: .crosslink/rules/tracking-relaxed.md
No issue-tracking enforcement. Only git mutations are blocked (same as all modes). Best for projects where crosslink is used occasionally.
Customizing mode rules
Each mode loads its instructions from .crosslink/rules/tracking-{mode}.md. Edit these files to customize wording or add project-specific rules.
To reset to defaults:
crosslink init --force