From sign-up to a fully encrypted, restorable snapshot of your GitHub footprint — code, settings, teams, webhooks, Actions workflows. This guide walks you through every step.
Fill in your work email, company and a password. Click Start free trial.
Confirm via the verification email.
On the trial selection screen, pick GitHub. Your trial workspace is provisioned instantly.
Painless onboarding
Trial accounts get the full GitHub feature set — encryption, BYOB, scheduling, cross-owner restore. Switch to a paid plan at any moment without losing data.
Option B — Paid licence (Stripe checkout)
Go to cybback.com/tarifs and pick the GitHub plan that matches the number of GitHub owners (user / organisations) to protect.
Click Subscribe. Stripe Checkout supports cards, SEPA and invoicing on annual plans.
Your licence is active immediately — visible under Account → Subscription.
2
Connect GitHub
Generate a Personal Access Token (PAT)
CYBBACK reads your GitHub data through a Personal Access Token. Pick the type that matches your governance — both classic and fine-grained PATs are supported.
GitHub PATs always expire. CYBBACK will start failing silently if the token expires. Set a calendar reminder a week before expiration to generate a new one and update the credential in Settings.
Paste the PAT and click Validate. CYBBACK calls GET /user to confirm the token works and fetches your username + accessible orgs.
The PAT is encrypted (AES-256-GCM) and stored in the CYBBACK vault.
app.cybback.com/dashboard/github-backup
Dashboard
Configuration
Personal Access TokenEncrypted at rest
Classic (repo scope) or fine-grained PAT.
✓ @octocat — orgs: acme-corp, internal-tools
3
Repository selection
Pick what to back up
CYBBACK can back up every repository the PAT can see, or only a hand-picked subset. You can also tune which categories of data to capture per backup.
Scope
All my repos (default) — every repo where the PAT has access (own + collaborator + org member).
Manual selection — click Load repos, then tick by owner or by individual repo. Useful when you only want to protect production repos and skip personal forks.
What to include
Each backup can include or skip these categories independently:
Source code — full git history (git bundle --all), all branches and tags.
The git bundle is automatically skipped for any repo whose pushed_at hasn't changed since the previous backup. So a daily backup of 100 stable repos transfers virtually nothing — only metadata for the 2 or 3 repos with new commits.
4
Bring Your Own Bucket
Use your own S3-compatible storage
Want full data sovereignty? Point CYBBACK at your S3-compatible bucket — AWS S3, GCS, Scaleway, OVH, Wasabi, MinIO. Your data, your provider, your region.
Provision the bucket
In your S3 provider, create a private bucket (no public access, versioning recommended).
Create an access key / secret key with permissions limited to that bucket.
Pick a window (e.g. 04:00 Europe/Paris) and click Save.
Track your backups
Real-time: the Events page streams every operation across all services via SSE.
Notifications: success / failure / drift alerts via email, Slack and webhooks.
Drift detection: alerts on suspicious patterns — mass repo deletions, force-pushes erasing history, sudden permission changes between runs.
Rate limits
Classic PATs cap at 5,000 REST requests per hour. CYBBACK respects the x-ratelimit-remaining header and pauses automatically. For accounts with hundreds of repos and frequent backups, consider a dedicated PAT per worker.
6
Restore
Restore — cross-owner & granular
CYBBACK restores from any previous GitHub snapshot. Push a single repo back to its original owner, fork it to an alternate user/org, or roll back the entire account in case of compromise.
The 3-step restore flow
Selection. Open the snapshot, browse the repos, tick what you want to recover. Pick the categories to restore (code, settings, webhooks, workflows, variables).
Options. Choose your safety net:
Dry-run — simulate, no GitHub API write, no git push.
Force overwrite — git push --mirror --force, replaces the target history. Use only if you trust the snapshot.
Target owner — leave empty to restore to the original owner, or specify another user/org. Combine with a repo-name suffix (-restored) to avoid collisions.
Execution. The async worker downloads the bundle from S3, pushes via git push --mirror, then recreates webhooks + Actions variables via REST. A summary shows what was created, updated or skipped.
Force overwrite (push --mirror --force)Replace the target history with the snapshot
Best practices
Always start with a dry-run — the worker reports exactly what it would push without touching GitHub.
Restore to an alternate owner first for major DR scenarios. Validate the result, then plan a controlled cutover.
Force overwrite is irreversible on the target. The original repo's history is gone after a successful --force push.
Actions secret values cannot be restored
GitHub never returns secret values via API. Backups capture only the names. After restoring a repo, your team will need to re-enter the secret values in the GitHub UI — the names list helps avoid forgetting any.
You're all set.
Need help? Our team replies within one business day on every plan.