Recipe: onboard a client repository
The scenario: a client hands you a repository. You have never run it, you do not know what is in its history, and you need to be delivering against it this week — without their credentials ending up somewhere they should not be.
This recipe is the safe path, in the order the risks actually arrive.
Prerequisites
Section titled “Prerequisites”- A hlix workspace and an API key
- The client’s repository checked out locally
- Agency
owneroradminif you will also connect GitHub
The recipe
Section titled “The recipe”-
Look before you upload. The first command is not an import.
Terminal window cd path/to/client-repohlix import . --dry-runRead three things in the report: history findings, protected files, and quarantined resources. A client repository is exactly where a committed
.envfrom two years ago shows up. -
Deal with what the scan found — do not override it.
If history findings appear, the credential is in the Git history and anyone with that history can recover it.
--history preserveuploads the history despite the findings; it does not remove them. Rotate first, with the client, then re-scan.Terminal window hlix import . --dry-run --history abort-on-findingsExpected result: no blocking findings. That is the gate for continuing.
-
Import for real.
Terminal window hlix import . --name "Acme — storefront"Expected result:
Imported Acme — storefrontProject ID: 6f1c2a9e-8f0b-4a7d-9d33-2f0b1c7e5a41Revision: 1Protected files travelled the encrypted path and are out of the Git bundle. Quarantined resources — any
AGENTS.md, skill, or.mcp.jsonthe client’s repo carried — are preserved but inert. -
Decide what you trust. The client’s repository may contain agent instructions written by someone else. They do nothing until you activate them, and you should read them before you do.
Terminal window hlix agent import AGENTS.md --name "Acme builder"Skip this step entirely if you would not hand those instructions to a contractor.
-
Attach it to the client account in the dashboard, under Customers, so the project appears in that client’s grouping and their portfolio rolls up correctly.
-
Ship one small thing first. Not the big refactor. Pick a change whose correctness you can judge at a glance, so the first review tells you whether the setup is right rather than whether the change is right.
Start the run from the dashboard, or over the API:
Terminal window curl -sS -X POST "$HLIX_BASE_URL/v1/api/projects/$PROJECT_ID/start" \-H "x-api-key: $HLIX_API_KEY" \-H "X-Organization-Id: $HLIX_WORKSPACE_ID" \-H 'content-type: application/json' \-d '{"brief":"Add a health endpoint at GET /healthz returning 200 with the build SHA, and cover it with a test."}' -
Read the evidence, not the summary.
Terminal window hlix tasks listhlix tasks review <task-id>The
files[].patchis the diff read back from the repository host — an observation, not the agent’s account of itself.
What this buys you
Section titled “What this buys you”- The client’s secrets never entered a commit, and you found the historical ones before they became your problem.
- Someone else’s agent instructions did not silently start steering your delivery.
- The first change was small enough that a bad result told you about your setup.
If the recipe stalls
Section titled “If the recipe stalls”scan_blockedon a repo the client swears is clean — the blocker list names each finding. See If the scan blocks the import.already_imported— the folder is bound from a previous attempt. Usehlix push, or delete the cloud project and re-import.- The first task never runs — a task must come from a cycle. A project run creates them; a standalone task does not execute. See Tasks.
- Review evidence says it cannot verify the branch — the project has no connected remote yet. Connect GitHub, or read the downloadable workspace archive instead.