| github-owner | GitHub username or organization name | yes | — |
| github-token | GitHub Personal Access Token (needs repo scope; also needs read:org scope for organization repos) | yes | — |
| gitee-owner | Gitee username or organization name | yes | — |
| gitee-token | Gitee Personal Access Token (needs projects scope) | yes | — |
| account-type | Account type: user or org. Applies to both GitHub and Gitee sides (asymmetric types are not supported). | no | user |
| include-private | Whether to include private repositories | no | true |
| include-repos | Comma-separated list of repository names to include (allow list). When set, ONLY these repos are synced. Takes precedence over exclude-repos. | no | "" |
| exclude-repos | Comma-separated list of repository names to exclude | no | "" |
| direction | Sync direction: github2gitee, gitee2github, both, github2local, or gitee2local. The *2local variants sync repositories to a local directory specified by local-path. | no | github2gitee |
| create-missing-repos | Whether to create repos on target platform if they do not exist | no | true |
| sync-extra | Comma-separated list of extra items to sync: releases,wiki,labels,milestones,issues | no | "" |
| dry-run | Run all logic without actual sync (for debugging/testing) | no | false |
| visibility | Filter repos by visibility: all, public, or private (default: all). Applied after include/exclude filtering. | no | all |
| show-private-repo-names | Controls how private repository names appear in logs (default: false). false/no/none: mask as [private]; true/yes/full: show full name; N (positive integer): show only the first N characters followed by '****' wrapped in brackets (e.g. 3 → '[CSM****]').
| no | false |
| git-timeout | Timeout in seconds for individual git operations such as clone and push (default: 900). Increase this value for very large repositories or slow/unreliable networks.
| no | 900 |
| local-path | Local directory path used as sync target when direction is 'github2local' or 'gitee2local'. Supports both Windows (e.g. 'C:\repos') and Linux/macOS (e.g. '/var/repos') paths. The directory will be created if it does not exist. Each repository is stored as a bare repo at '<local-path>/<repo-name>.git'.
| no | "" |