Appearance
KSCM Commands
Command Overview
KSCM uses a flat command list (no sub-commands). The first positional argument is the command name, followed by options. Options use the strict --key:value form, with --help or --h as the only flags. Use global help or per-command help to see the available options for each command.
text
kscm <command> [options]
kscm --help
kscm <command> --helpAuth context
Once login is performed, server, user, and password options are persisted and reused for subsequent commands. Most commands also allow you to re-enter login options to update them as needed.
text
kscm edit --workspace:<workspace-name> --file:./file.ext --user:<username> --pass:<password>Workspace context
Most commands operate within a workspace context. If --workspace is omitted, KSCM attempts to infer the workspace from the current directory.
text
cd ~/path/to/workspace
kscm edit --file:./file.extIf multiple workspaces match the current path, KSCM will require an explicit --workspace.
Commands
Auth & Session
Users & Groups
Repository
Workspace
create-workspacedelete-workspacelist-workspacesedit-workspace-settingsshow-workspace-settingsrefreshreconcilesyncclean-workspacehost-workspace
History & Inspection
File Operations
Changelists
Attachments
Stashes
Submit
Skills & Integration
login
Authenticate to a KSCM server and save a login binding for subsequent commands.
Syntax
text
kscm login [options]Required options
--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).
Optional options
--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use login once per environment or after credentials expire, so subsequent commands can run without repeating server and user credentials.
If you are already logged in, you can re-run login to refresh the saved login using the previously stored server and user.
Example
text
# First login (server/user required when no saved login exists)
kscm login --server:kimuraserver:8666 --user:alice --pass:MyPassword
# Re-login to refresh/update the saved binding
kscm login --server:kimuraserver:8666 --user:alice --pass:MyNewPasswordlogout
Remove the saved login binding.
Syntax
text
kscm logoutRequired options
None.
Optional options
None.
Use case
Use logout when switching accounts or servers, or when you want to ensure subsequent commands do not reuse a previously saved login. If you are not logged in, logout prints a message and exits successfully.
Example
text
kscm logoutshow-oidc
Show the server OpenID Connect (OIDC) configuration.
Syntax
text
kscm show-oidc [options]Required options
None.
Optional options
--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use show-oidc to inspect the effective server OIDC configuration used by SSO login.
Notes:
- Requires server admin privileges.
Example
text
kscm show-oidcedit-oidc
Patch the server OpenID Connect (OIDC) configuration.
Syntax
text
kscm edit-oidc [oidc-options] [--clear:<csv-or-json>] [options]Required options
- At least one OIDC patch option or
--clear.
OIDC patch options
--authority:<url>--clientid:<id>--audience:<value>--scopes:<space-delimited-scopes>--authorizeendpoint:<url>--tokenendpoint:<url>--redirecturi:<url>--requirepkce:true|false--usernameclaim:<claim-name>--issuer:<issuer>--clockskewseconds:<non-negative-int>--clear:<csv-or-json>Clear specific fields by name.
Optional auth options
--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use edit-oidc to update only selected OIDC fields without replacing the whole configuration.
Notes:
- Patch-by-default behavior: unspecified fields remain unchanged.
- Use
--clearto reset fields (CSV:authority,clientidor JSON:["authority","clientid"]). - Requires server admin privileges.
Example
text
# Update authority and client id
kscm edit-oidc --authority:https://login.microsoftonline.com/<tenant>/v2.0 --clientid:<client-id>
# Clear optional endpoint overrides
kscm edit-oidc --clear:authorizeendpoint,tokenendpointstatus
Show login status and (optionally) workspace status.
Syntax
text
kscm status [options]Required options
None.
Optional options
--workspace:<name>Workspace name (if omitted, KSCM attempts to infer from the current directory).
Use case
Use status to confirm which user/server you are currently logged in as, and to quickly verify a workspace is reachable and up to date.
If a workspace is specified (or inferred), status refreshes the workspace and prints workspace details. If no workspace is specified or inferred, it prints login status only.
Example
text
# Login status only
kscm status
# Workspace status (explicit)
kscm status --workspace:MyWorkspace
# Workspace status (inferred from current directory)
cd ~/path/to/MyWorkspace
kscm statusmcp
Run KSCM as a stdio MCP server.
mcp turns KSCM into a long-lived process that speaks MCP over stdio (JSON-RPC messages on stdin/stdout). This is the preferred long-lived integration mode for MCP-compatible tools and assistant/LLM workflows.
Syntax
text
kscm mcpRequired options
None.
Optional options
None.
Use case
Use mcp when an MCP client should invoke KSCM commands as tools through a persistent process instead of shelling out for each command.
Notes:
- Runs until stdin closes, or until a client sends MCP shutdown and exits cleanly.
- Tool calls are processed one at a time by the server process.
- A workspace is loaded when a workspace-scoped tool is first invoked.
- Only one workspace is kept in memory at a time.
- If a later tool call targets a different workspace, KSCM unloads the current workspace and loads the requested workspace.
- For repeated calls against the same workspace/context, KSCM reuses the loaded workspace to avoid reload overhead.
host-workspaceremains available for legacy integrations that still depend on its JSONL protocol.
Example
text
# Start MCP server on stdio
kscm mcphost-server
Host a Kimura server process from KSCM.
host-server turns KSCM into a long-lived Kimura server host process using the built-in Kimura server bootstrap.
Syntax
text
kscm host-server [options]Required options
None.
Optional options
--servername:<name>Server name (default:KIMURA).--serverport:<port>Kimura server port (default:8666).--defaultfsport:<port>FS-DEFAULT port (default:8667).--serverlocation:<path>Server storage path (default: appdataServersfolder).--defaultfslocation:<path>FS-DEFAULT storage path (default: appdataFileServersfolder).
Use case
Use host-server when you want a local or scripted server host directly from kscm.
Notes:
- Runs until
Ctrl-Cor process termination. - If no admin users exist and terminal input is interactive, KSCM prompts for admin creation.
- If stdin is redirected, KSCM auto-creates a temporary admin user and prints credentials.
host-serveris CLI-only and is not exposed as an MCP tool.
Example
text
# Start server with defaults
kscm host-server
# Start server with custom ports and storage
kscm host-server --servername:DEV-SERVER --serverport:9666 --defaultfsport:9667 --serverlocation:./ServerData --defaultfslocation:./FSDefaultDatahost-file-server
Host a standalone Kimura file server process from KSCM.
host-file-server turns KSCM into a long-lived standalone file server host process that connects to an existing Kimura server.
Syntax
text
kscm host-file-server --server:<host:port> --fsname:<name> --fspass:<password> [options]Required options
--server:<host:port>Kimura server endpoint.--fsname:<name>File server login name.--fspass:<password>File server login password.
Optional options
--port:<port>Hosted file server TCP port (default:8669).--path:<path>File server storage root (default: appdataFileServersfolder).--trustedservercert:true|falseRequire trusted certificate from Kimura server (default:false).--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path (requires--certpfxpwd).--certpfxpwd:<password>Client certificate PFX password (requires--certpfx).
Use case
Use host-file-server when you want to run a standalone file server node from CLI and connect it to an existing Kimura server.
Notes:
- Hosted file server endpoint is always derived as
localhost:<port>. - If no certificate options are provided, KSCM generates a self-signed certificate.
- Runs until
Ctrl-Cor process termination. - Returns non-zero if file server initialization or connection fails.
host-file-serveris CLI-only and is not exposed as an MCP tool.
Example
text
# Start standalone file server with defaults
kscm host-file-server --server:localhost:8666 --fsname:FS-A --fspass:Password
# Start with explicit storage path, port, and trust requirement
kscm host-file-server --server:kimura.example.com:8666 --fsname:FS-West --fspass:Password --port:9670 --path:./FileServers --trustedservercert:truelist-users
List user accounts on the server.
Syntax
text
kscm list-users [options]Required options
None.
Optional options
--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use list-users to discover available accounts and inspect login name, authentication mode, certificate requirement, group memberships, and last access.
Example
text
kscm list-usersshow-user
Show detailed information for one user account.
Syntax
text
kscm show-user --username:<name> [options]Required options
--username:<name>User name.
Optional options
--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use show-user when you need one account's full details, including login name and group membership.
Example
text
kscm show-user --username:alicecreate-user
Create a user account.
Syntax
text
kscm create-user --username:<name> --loginname:<value> --auth:password|sso --group:<name> [options]Required options
--username:<name>User name.--loginname:<value>Required login identifier (for authentication/OIDC identity).--auth:password|ssoAuthentication method.--group:<name>Primary group.
Optional options
--password:<value>Password (required when--auth:password).--groups:<csv-or-json>Additional groups (CSV or JSON list).--requirecert:true|falseRequire certificate for user login (default: false).--usercertthumbprint:<thumbprint>Required certificate thumbprint (requires--requirecert:true).--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use create-user to provision a new account and initial group memberships.
Example
text
# Password user
kscm create-user --username:bob --loginname:bob@example.com --auth:password --password:StrongPass123 --group:Developers
# SSO user with additional groups
kscm create-user --username:carol --loginname:carol@example.com --auth:sso --group:Developers --groups:Artists,Reviewersedit-user
Edit one or more components of an existing user account. The user name and group memberships are unchanged.
Syntax
text
kscm edit-user --username:<name> [edit-options] [options]Required options
--username:<name>User name.
At least one edit option is required.
Edit options
--loginname:<value>New login identifier.--auth:password|ssoAuthentication method. When settingpassword,--passwordis required.--password:<value>New password. A non-empty password is applied only when the resulting authentication method ispassword; switch an SSO account to password authentication with--auth:passwordand this option together.--requirecert:true|falseRequire a client certificate for user login. Supplying this option updates the certificate settings and clears an unused thumbprint.--usercertthumbprint:<thumbprint>Require a specific client certificate thumbprint. This option requires--requirecert:true.
Optional options
--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use edit-user when you need to update a user's login identifier, authentication method, password, or certificate requirement. All supplied edit options are applied as one user update.
Example
text
# Change the login identifier and password together
kscm edit-user --username:carol --loginname:carol@new-idp.example --auth:password --password:StrongPass123
# Switch to SSO authentication
kscm edit-user --username:carol --auth:sso
# Require a trusted client certificate with a specific thumbprint
kscm edit-user --username:carol --requirecert:true --usercertthumbprint:0123456789abcdef0123456789abcdefedit-user-groups
Edit an existing user's group memberships.
Syntax
text
kscm edit-user-groups --username:<name> [--add-groups:<csv-or-json>] [--remove-groups:<csv-or-json>] [options]Required options
--username:<name>User name.- At least one of:
--add-groups:<csv-or-json>--remove-groups:<csv-or-json>
Optional options
--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use edit-user-groups to grant or revoke membership for existing users.
Notes:
- Strict behavior: the command fails if any requested group operation is invalid (unknown group, already assigned on add, not assigned on remove, or overlap between add/remove sets).
- Group lists accept CSV (
dev,artists) or JSON (["dev","artists"]).
Example
text
# Add groups
kscm edit-user-groups --username:alice --add-groups:Developers,Reviewers
# Remove groups
kscm edit-user-groups --username:alice --remove-groups:'["Artists"]'
# Add and remove in one call
kscm edit-user-groups --username:alice --add-groups:Developers --remove-groups:Reviewersdelete-user
Delete a user account.
Syntax
text
kscm delete-user --username:<name> [options]Required options
--username:<name>User name.
Optional options
--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use delete-user when deprovisioning an account.
Example
text
kscm delete-user --username:boblist-user-groups
List user groups on the server.
Syntax
text
kscm list-user-groups [options]Required options
None.
Optional options
--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use list-user-groups to audit available groups and member counts.
Example
text
kscm list-user-groupscreate-user-group
Create a user group.
Syntax
text
kscm create-user-group --group:<name> [options]Required options
--group:<name>Group name.
Optional options
--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use create-user-group before assigning users to a new access role.
Example
text
kscm create-user-group --group:Reviewerscreate-repo
Create a repository on the server.
Syntax
text
kscm create-repo --repository:<name> [options]Required options
--repository:<name>Repository name.
Optional options
--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use create-repo when setting up a new project or repository on a KSCM server. This command typically requires server permissions to create repositories.
Example
text
# Create a repository (when already logged in)
kscm create-repo --repository:MyRepo
# Create a repository and provide login details (when not already logged in)
kscm create-repo --repository:MyRepo --server:kimuraserver:8666 --user:alice --pass:MyPasswordlist-repos
List repositories and their branches.
Syntax
text
kscm list-reposRequired options
None.
Optional options
--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use list-repos to discover repository names and available branches, or to confirm what is available on a server before creating a workspace.
Example
text
# List repositories and branches (when already logged in)
kscm list-repos
# List repositories and branches and provide login details (when not already logged in)
kscm list-repos --server:kimuraserver:8666 --user:alice --pass:MyPasswordcreate-repomap
Create a repository map on the server.
Syntax
text
kscm create-repomap --name:<map-name> --path:<workspace-path> --repository:<repo-name> --branch:<branch-name> [options]Required options
--name:<map-name>Repository map name.--path:<workspace-path>Workspace path to map (for example/).--repository:<repo-name>Repository name.--branch:<branch-name>Branch name.
Optional options
--overwrite:true|falseOverwrite existing map if it already exists (default: false).--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use create-repomap to add a new reusable repository map for workspace creation and stash filtering scenarios.
Example
text
# Create a map with a root mapping
kscm create-repomap --name:Game-main --path:/ --repository:Game --branch:main
# Overwrite an existing map
kscm create-repomap --name:Game-main --path:/ --repository:Game --branch:release --overwrite:trueedit-repomap
Edit an existing repository map on the server.
Syntax
text
kscm edit-repomap --name:<map-name> [--path:<workspace-path> --repository:<repo-name> --branch:<branch-name>] [--delete-path:<workspace-path>] [options]Required options
--name:<map-name>Repository map name.
Optional options
--path:<workspace-path>Workspace path to set or update (requires--repositoryand--branch).--repository:<repo-name>Repository name for--path.--branch:<branch-name>Branch name for--path.--delete-path:<workspace-path>Remove a path mapping (repeatable).--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use edit-repomap for patch-style updates to existing maps without replacing all entries.
Notes:
- At least one mutation is required (
--path/--repository/--branchor--delete-path). - If one of
--path,--repository, or--branchis provided, all three are required. - The root path
/cannot be deleted.
Example
text
# Update one path mapping
kscm edit-repomap --name:Game-main --path:/Plugins --repository:Plugin --branch:main
# Delete a mapping path
kscm edit-repomap --name:Game-main --delete-path:/Pluginslist-repomaps
List repository maps.
Syntax
text
kscm list-repomaps [options]Required options
None.
Optional options
--mappings:true|falsePrint repo map entries (path, repository, branch) (default: false).--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use list-repomaps to find which repository map name to pass to create-workspace. Add --mappings:true to see the map entries and understand how workspace paths map to repositories and branches.
Example
text
# List available repository maps
kscm list-repomaps
# Include map entries
kscm list-repomaps --mappings:truecreate-workspace
Create a local workspace configuration.
create-workspace saves workspace metadata in KSCM's app data so other commands can load the workspace and interact with it. It does not create or sync files by itself; run sync after creating a workspace.
Syntax
text
kscm create-workspace --name:<workspace-name> --path:<workspace-path> --repomap:<map-name> [options]Required options
--name:<workspace-name>Workspace name.--path:<workspace-path>Workspace root folder path.--repomap:<map-name>Repository map name (validated against server info; seelist-repomaps).
Optional options
--primaryfsname:<name>Primary file server name (default:FS-DEFAULT).--primaryfsendpoint:<endpoint>Primary file server endpoint (default: first endpoint).--secondaryfsname:<name>Secondary file server name (default: none).--secondaryfsendpoint:<endpoint>Secondary file server endpoint (default: first endpoint).--load:true|falseLoad the workspace after creating it (default: false).--refresh:true|falseRefresh after load (only if--load:true) (default: false).--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use create-workspace when setting up a machine for the first time, or when you need a new workspace that points at a different repository map.
Notes:
- KSCM validates the repository map name and file server settings against the server.
- If
--refresh:trueis set,--load:trueis also required. - The current implementation writes workspace metadata but does not automatically load or sync the workspace; use
syncafter creation.
Example
text
# Find a repository map name
kscm list-repomaps
# Create workspace metadata
kscm create-workspace --name:MyWorkspace --path:~/Dev/MyWorkspace --repomap:Main --server:kimuraserver:8666 --user:alice --pass:MyPassword
# Sync the workspace to latest
cd ~/Dev/MyWorkspace
kscm sync
# Create workspace metadata with explicit file server selection
kscm create-workspace --name:MyWorkspace --path:~/Dev/MyWorkspace --repomap:Main --primaryfsname:FS-DEFAULT --primaryfsendpoint:<primary-endpoint> --secondaryfsname:<secondary-fs-name> --secondaryfsendpoint:<secondary-endpoint>delete-workspace
Delete a workspace (local metadata only).
delete-workspace removes the local workspace metadata stored under KSCM's app data. It does not delete the workspace files from disk.
Syntax
text
kscm delete-workspace --workspace:<name>Required options
--workspace:<name>Workspace name.
Optional options
None.
Use case
Use delete-workspace when you no longer need a workspace on this machine, or when you want to remove a stale/broken local workspace configuration and recreate it.
Notes:
- Refuses to delete a workspace if it appears to be in use by another process.
Example
text
kscm delete-workspace --workspace:MyWorkspacelist-workspaces
List all available local workspaces.
Syntax
text
kscm list-workspacesRequired options
None.
Optional options
None.
Use case
Use list-workspaces to see the workspace names available on this machine so you can reference one explicitly with --workspace:<name> when needed.
Notes:
- This command lists local workspace metadata. It does not contact the server.
Example
text
kscm list-workspacesedit-workspace-settings
Edit local workspace settings.
edit-workspace-settings updates workspace metadata stored locally (it does not change server configuration). It is primarily used to adjust file server selection for an existing workspace.
Syntax
text
kscm edit-workspace-settings --workspace:<name> [options]Required options
--workspace:<name>Workspace name.
Optional options
--primaryfsname:<name>Primary file server name (default: existing value).--primaryfsendpoint:<endpoint>Primary file server endpoint (default: existing value).--secondaryfsname:<name|none>Secondary file server name (default: existing value; usenoneto clear).--secondaryfsendpoint:<endpoint>Secondary file server endpoint (default: existing value).--server:<host:port>Server address (required if no saved login exists).--user:<username>Username (required if no saved login exists).--pass:<password>Password.--trustedservercert:true|falseRequire server to provide a trusted certificate.--certthumbprint:<thumbprint>Client certificate thumbprint.--certpfx:<path>Client certificate PFX path.--certpfxpwd:<password>Client certificate PFX password.
Use case
Use edit-workspace-settings when a workspace needs different file server endpoints (for example, switching to a closer mirror), or when you need to remove a configured secondary file server.
Notes:
- You must specify at least one edit option (
primaryfsname,primaryfsendpoint,secondaryfsname, orsecondaryfsendpoint). - Refuses to edit while another process has the workspace loaded.
Example
text
# Update primary endpoint
kscm edit-workspace-settings --workspace:MyWorkspace --primaryfsendpoint:<primary-endpoint>
# Clear the secondary file server
kscm edit-workspace-settings --workspace:MyWorkspace --secondaryfsname:noneshow-workspace-settings
Show local workspace settings.
show-workspace-settings displays workspace metadata stored locally. It does not query the server.
Syntax
text
kscm show-workspace-settings [options]Required options
None.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--tags:<csv-or-json>Filter by tags extracted from description (match any tag).--clid:<id>Target workspace changelist id (default: 0).
Use case
Use show-workspace-settings to verify which repository map and file servers a workspace is configured to use, or to quickly check the workspace path and server binding.
Example
text
# Show settings for the workspace inferred from the current directory
cd ~/Dev/MyWorkspace
kscm show-workspace-settings
# Show settings for a specific workspace
kscm show-workspace-settings --workspace:MyWorkspacerefresh
Refresh a workspace.
refresh updates local workspace state by asking the server for the latest information about the workspace and its files. It is commonly used before running other workspace commands.
Syntax
text
kscm refresh [options]Required options
None.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).
Use case
Use refresh to make sure your local workspace state is current before checking status, syncing, or submitting changes.
Example
text
# Refresh workspace inferred from the current directory
cd ~/Dev/MyWorkspace
kscm refresh
# Refresh a specific workspace
kscm refresh --workspace:MyWorkspacereconcile
Reconcile and list workspace differences.
reconcile scans the workspace and reports files that are modified, missing, extra, or not at the latest revision.
Syntax
text
kscm reconcile [options]Required options
None.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--modified:true|falseShow modified files.--missing:true|falseShow missing files.--extra:true|falseShow extra files.--notlatest:true|falseShow files not at the latest revision.--summary:true|falsePrint summary counts (default: true).
Use case
Use reconcile to quickly find workspace drift before syncing or submitting, or to audit which files differ from the server.
Notes:
- If no category filter is specified, all categories are shown.
- A file may appear in multiple categories.
Example
text
# Reconcile the inferred workspace
cd ~/Dev/MyWorkspace
kscm reconcile
# Only show missing and extra files
kscm reconcile --missing:true --extra:truesync
Sync files to a revision.
sync downloads files for a workspace to match a specific revision changelist (--clid) or the latest revision.
Syntax
text
kscm sync [options]Required options
None.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--clid:<id>Revision changelist id (default:0= latest).--force:true|falseForce sync (default: false).--clfiles:true|falseSync only files that are part of--clid(default: false).--file:<path>Single file path (optional).--files:<list>File list: JSON (["a","b"]) or CSV (a,b) (optional).--directory:<path>Directory path (optional; may also be a JSON list).--destination:<path>Download destination path (optional).
Use case
Use sync to bring your workspace up to date, to roll back to an older revision for testing, or to sync only a subset of files/directories.
Notes:
- If neither
--file/--filesnor--directoryis specified, KSCM syncs the entire workspace. --directorycan be a single path or a JSON list (for example["a","b"]or{"a","b"}).- If
--clfiles:trueis set,--clidmust be a changelist id greater than0. - If
--destinationis set, files are downloaded there and workspace revision state is not updated.
Example
text
# Sync entire workspace to latest
cd ~/Dev/MyWorkspace
kscm sync
# Sync a specific file
kscm sync --file:./Content/Example.uasset
# Sync a directory
kscm sync --directory:./Content
# Sync to a specific revision changelist id
kscm sync --clid:12345
# Sync only files that belong to CL 12345
kscm sync --clid:12345 --clfiles:true
# Force sync (overwrite local state as needed)
kscm sync --force:true
# Download selected files to a temp folder (without changing workspace revision state)
kscm sync --file:./Content/Example.uasset --clid:12345 --destination:/tmp/kscm-compareclean-workspace
Clean a workspace to a revision.
clean-workspace removes local file operations, deletes extra files, and force-syncs the workspace to a specific revision changelist (--clid) or the latest revision.
Syntax
text
kscm clean-workspace [options]Required options
None.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--clid:<id>Revision changelist id (default:0= latest).
Use case
Use clean-workspace to return a workspace to a pristine state that matches a specific revision, discarding local changes.
Notes:
- This operation is destructive; local modifications and extra files will be removed.
Example
text
# Clean the entire workspace to latest
cd ~/Dev/MyWorkspace
kscm clean-workspace
# Clean to a specific revision changelist id
kscm clean-workspace --clid:12345host-workspace
Run KSCM as a long-lived workspace host process.
host-workspace turns KSCM into a long-lived process that reads JSONL requests from stdin and writes JSONL responses to stdout. This mode is primarily kept for legacy integrations (for example, older Unreal Engine plugin flows) that already use this protocol.
Syntax
text
kscm host-workspaceRequired options
None.
Optional options
None.
Use case
Use host-workspace when an existing integration already depends on the host-workspace JSONL protocol and needs a persistent KSCM process.
Notes:
- Runs until it receives
exitorstopon stdin, or stdin closes. - The request/response format is JSONL (one JSON object per line).
- For new long-lived integrations, prefer
mcp.
Example
text
# Start the host (expects JSONL input on stdin)
kscm host-workspace
# Stop the host (send on stdin)
exithistory
List revision history.
history prints revision changelists for a workspace. You can target the entire workspace (default), a specific file, multiple files, or a specific directory.
Syntax
text
kscm history --file:<path> [options]
kscm history --files:<list> [options]
kscm history --directory:<path> [options]
kscm history [options]Required options
None.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--file:<path>Single file path (relative to the current directory, or absolute).--files:<list>File list: JSON (["a","b"]) or CSV (a,b). Paths are relative to the current directory, or absolute.--directory:<path>Single directory path (relative to the current directory, or absolute).--count:<n>Number of revisions to show (default: 50).
Use case
Use history to find a revision changelist id (clid) to inspect with show-revision, or to review recent changes for a file or folder.
Notes:
--directorycannot be combined with--fileor--files.--fileand--filescan be combined.- If neither
--file,--files, nor--directoryis specified, KSCM shows the workspace root history. - When using
--file, output includes the operation and revision number for that file. - When multiple files are requested, output is grouped by file and
--countapplies to each file.
Example
text
# Workspace history (inferred workspace)
cd ~/Dev/MyWorkspace
kscm history
# File history
kscm history --file:./Source/MyFile.cpp --count:20
# Multiple file histories
kscm history --files:'["./Source/A.cpp","./Source/B.cpp"]' --count:5
# Directory history
kscm history --directory:./Source --count:50show-revision
Show details for a revision changelist.
show-revision prints revision metadata and the list of operations in a revision changelist (clid) for the current workspace.
Syntax
text
kscm show-revision --clid:<id> [options]Required options
--clid:<id>Revision changelist id.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).
Use case
Use show-revision after history to inspect a specific revision in more detail, including the files that changed.
Example
text
# Show revision details in the inferred workspace
cd ~/Dev/MyWorkspace
kscm show-revision --clid:12345
# Show revision details for a specific workspace
kscm show-revision --workspace:MyWorkspace --clid:12345add
Mark files and directories for add.
add schedules new files (or all eligible files under a directory) to be included in the next submission from the workspace.
Syntax
text
kscm add --file:<path> [options]
kscm add --files:<list> [options]
kscm add --directory:<path-or-list> [options]Required options
--file:<path>Single file path, or--files:<list>File list: JSON (["a","b"]) or CSV (a,b), or--directory:<path-or-list>Directory path, or JSON list of directory paths.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--clid:<id>Target workspace changelist id (default: 0).
Use case
Use add after creating new files in your workspace so they are tracked and can be submitted.
Marking files for add also signals to other users that you intend to introduce those files as part of your upcoming changes.
Notes:
- File paths are interpreted relative to the current directory. KSCM resolves them to full paths before processing.
Example
text
# Add a single file
kscm add --file:./Content/NewAsset.uasset
# Add multiple files
kscm add --files:{"./a.txt","./b.txt"}
# Add all new files under a directory
kscm add --directory:./Content/NewFolder
# Add multiple directories
kscm add --directory:{"./Content/A","./Content/B"}
# Add a file to a specific changelist
kscm add --file:./Content/NewAsset.uasset --clid:123
# Add a directory to a specific changelist
kscm add --directory:./Content/NewFolder --clid:123edit
Mark files and directories for edit.
edit checks out files for editing in the workspace. It can also operate on directories (to select eligible files under those directories). Optionally, it can lock files so other users can still edit locally, but cannot submit new revisions while the lock is held (when supported by server policy).
Syntax
text
kscm edit --file:<path> [options]
kscm edit --files:<list> [options]
kscm edit --directory:<path-or-list> [options]Required options
--file:<path>Single file path, or--files:<list>File list: JSON (["a","b"]) or CSV (a,b), or--directory:<path-or-list>Directory path, or JSON list of directory paths.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--clid:<id>Target workspace changelist id (default: 0).--lock:true|falseLock files (default: false).
Use case
Use edit before modifying an existing file so KSCM can track the change and include it in a changelist and submission.
Marking a file for edit also signals to other users that you intend to modify that file.
Notes:
- File paths are interpreted relative to the current directory. KSCM resolves them to full paths before processing.
Example
text
# Edit a single file
kscm edit --file:./Source/MyFile.cpp
# Edit multiple files
kscm edit --files:{"./a.txt","./b.txt"}
# Edit all eligible files under a directory
kscm edit --directory:./Source
# Edit multiple directories
kscm edit --directory:{"./Source","./Plugins"}
# Edit and lock a file
kscm edit --file:./Content/Example.uasset --lock:true
# Edit a file in a specific changelist
kscm edit --file:./Source/MyFile.cpp --clid:123delete
Mark files and directories for delete.
delete schedules files to be deleted as part of a future submission from the workspace. It can also operate on directories (to select eligible files under those directories).
Syntax
text
kscm delete --file:<path> [options]
kscm delete --files:<list> [options]
kscm delete --directory:<path-or-list> [options]Required options
--file:<path>Single file path, or--files:<list>File list: JSON (["a","b"]) or CSV (a,b), or--directory:<path-or-list>Directory path, or JSON list of directory paths.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--clid:<id>Target workspace changelist id (default: 0).
Use case
Use delete when you want to remove files from the repository in your next submission.
Marking files for delete also signals to other users that you intend to remove those files as part of your upcoming changes.
Notes:
- File paths are interpreted relative to the current directory. KSCM resolves them to full paths before processing.
Example
text
# Delete a single file
kscm delete --file:./Content/OldAsset.uasset
# Delete multiple files
kscm delete --files:{"./a.txt","./b.txt"}
# Delete all eligible files under a directory
kscm delete --directory:./Content/OldAssets
# Delete multiple directories
kscm delete --directory:{"./Content/OldA","./Content/OldB"}
# Delete a file in a specific changelist
kscm delete --file:./Content/OldAsset.uasset --clid:123move
Move one tracked file or directory to a new path inside the same repository.
The operation is recorded as a paired source delete and destination add so the server preserves the file identity and move history.
Syntax
text
kscm move --file:<source> --destination:<path> [options]
kscm move --directory:<source> --destination:<path> [options]Required options
--file:<path>Source file, or--directory:<path>Source directory.--destination:<path>Destination file or directory path.
Specify exactly one source. The source and destination must remain inside the same repository.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--clid:<id>Target workspace changelist id (default:0, the default changelist).
Examples
text
cd ~/Dev/MyWorkspace
# Move one file
kscm move --file:Source/OldName.cpp --destination:Source/NewName.cpp
# Move a directory into another directory path
kscm move --directory:Assets/Old --destination:Assets/New
# Put the move in an existing workspace changelist
kscm move --file:Source/OldName.cpp --destination:Source/NewName.cpp --clid:123revert
Revert file and directory operations.
revert cancels pending file operations (such as add/edit/delete) for the specified files (or for eligible files under a directory) in the workspace.
Syntax
text
kscm revert --file:<path> [options]
kscm revert --files:<list> [options]
kscm revert --directory:<path-or-list> [options]Required options
--file:<path>Single file path, or--files:<list>File list: JSON (["a","b"]) or CSV (a,b), or--directory:<path-or-list>Directory path, or JSON list of directory paths.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--unchanged:true|falseWhen true, revert only selected local edit operations whose files are present and content-identical to their current workspace revision (default:false).
Use case
Use revert when you want to undo pending operations on a file (for example, if you marked a file for edit or delete by mistake).
Notes:
- If a file is marked for edit and has local modifications,
revertalso discards those modifications. - With
--unchanged:true, modified or missing files are left untouched. Pending add, delete, and move operations are also left untouched. - File paths are interpreted relative to the current directory. KSCM resolves them to full paths before processing.
Example
text
# Revert a single file
kscm revert --file:./Source/MyFile.cpp
# Revert multiple files
kscm revert --files:{"./a.txt","./b.txt"}
# Revert operations under a directory
kscm revert --directory:./Source
# Revert only unchanged local edits under a directory
kscm revert --directory:./Source --unchanged:truelist-ops
List active file operations.
list-ops shows files currently marked for add/edit/delete (and related operations) in the workspace, including who initiated the operation.
Syntax
text
kscm list-ops [options]Required options
None.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--user:<name>Filter by a single user.--users:<csv>Filter by a comma-separated list of users.--contains:<text>Filter by filename substring.--refresh:true|falseRefresh file operations before listing (default: true).
Use case
Use list-ops to review what will be included in a changelist/submission, or to see if someone else is already working on the same files.
Example
text
# List all operations in the inferred workspace
cd ~/Dev/MyWorkspace
kscm list-ops
# Filter by user
kscm list-ops --user:alice
# Filter by filename substring
kscm list-ops --contains:Example
# Avoid refreshing before listing (faster, but may be stale)
kscm list-ops --refresh:falsecreate-workspace-cl
Create a workspace changelist.
Changelists group file operations (add/edit/delete) into a named unit that can later be submitted.
Syntax
text
kscm create-workspace-cl --description:<text> [options]Required options
--description:<text>Description.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).
Use case
Use create-workspace-cl when you want to group a set of operations into a separate changelist (for example, one changelist per feature or bug fix).
Example
text
cd ~/Dev/MyWorkspace
# Create a changelist with a description
kscm create-workspace-cl --description:"Fix build warnings"
# Create a changelist with a description
kscm create-workspace-cl --description:"Upgrade dependency X"list-workspace-cls
List workspace changelists.
Syntax
text
kscm list-workspace-cls [options]Required options
None.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).
Use case
Use list-workspace-cls to find a changelist id (clid) to inspect, edit, delete, or submit.
Notes:
- Output includes changelist id, name, operation count, and a short description.
- The default changelist is marked with
*.
Example
text
cd ~/Dev/MyWorkspace
kscm list-workspace-cls
# Only changelists with any matching tag in their description
kscm list-workspace-cls --tags:review,urgentshow-workspace-cl
Show changelist details.
show-workspace-cl prints changelist metadata and can optionally include all file operations in the changelist.
Syntax
text
kscm show-workspace-cl --clid:<id> [options]Required options
--clid:<id>Workspace changelist id (or name likedefault).
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--ops:true|falsePrint all operations in the changelist (default: false).
Use case
Use show-workspace-cl to review what is in a changelist before submitting, or to inspect a changelist id returned by list-workspace-cls.
Notes:
- Options must use the strict
--key:valueform; use--ops:true(not--ops).
Example
text
cd ~/Dev/MyWorkspace
# Show details for the default changelist
kscm show-workspace-cl --clid:default
# Show details including operations
kscm show-workspace-cl --clid:123 --ops:trueedit-workspace-cl
Edit a workspace changelist.
edit-workspace-cl updates the description of an existing workspace changelist.
Syntax
text
kscm edit-workspace-cl --clid:<id> --description:<text> [options]Required options
--clid:<id>Workspace changelist id (or name likedefault).--description:<text>Description.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).
Use case
Use edit-workspace-cl to update a changelist description before submitting it, or to keep changelist descriptions consistent for reviews and auditing.
Notes:
- The default changelist cannot be modified.
Example
text
cd ~/Dev/MyWorkspace
# Update the description for a changelist id
kscm edit-workspace-cl --clid:123 --description:"Fix build warnings (Windows)"delete-workspace-cl
Delete a workspace changelist.
Syntax
text
kscm delete-workspace-cl --clid:<id> [options]Required options
--clid:<id>Workspace changelist id.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).
Use case
Use delete-workspace-cl to remove an unused or incorrect changelist before it is submitted.
Notes:
- By default, deleting a changelist does not revert the operations it contains.
- By default, operations from a deleted changelist are moved to the default changelist.
- The default changelist cannot be deleted.
Example
text
cd ~/Dev/MyWorkspace
kscm delete-workspace-cl --clid:123list-attachments
List attachments on a repo changelist, workspace changelist, or stash.
Syntax
text
kscm list-attachments --target:repo|workspace-cl|stash [options]Required options
--target:repo|workspace-cl|stashAttachment target.--clid:<id>Changelist id (repo/workspace-cl scopes).--id:<number>Numeric stash ID (stash scope).
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--stash-scope:all|local|remoteRestrict stash scope (default: all).--revision:<n>Stash revision (0 = latest, otherwise 1..N).
Use case
Use list-attachments to discover which attachments exist before downloading or deleting them.
Examples
text
# Repo changelist attachments
kscm list-attachments --target:repo --clid:12345
# Workspace changelist attachments
kscm list-attachments --target:workspace-cl --clid:default
# Stash attachments
kscm list-attachments --target:stash --id:1030 --stash-scope:remote --revision:0upload-attachment
Upload an attachment to a repo changelist, workspace changelist, or stash.
Syntax
text
kscm upload-attachment --target:repo|workspace-cl|stash --file:<path> [options]Required options
--target:repo|workspace-cl|stashAttachment target.--file:<path>File to upload.--clid:<id>Changelist id (repo/workspace-cl scopes).--id:<number>Numeric stash ID (stash scope).
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--stash-scope:all|local|remoteRestrict stash scope (default: all).--revision:<n>Stash revision (0 = latest, otherwise 1..N).
Use case
Use upload-attachment to attach build artifacts, review notes, or other files.
Notes:
- The attachment key is always the file name.
Examples
text
# Repo changelist attachment
kscm upload-attachment --target:repo --clid:12345 --file:./Reports/ReviewNotes.txt
# Workspace changelist attachment
kscm upload-attachment --target:workspace-cl --clid:default --file:./Reports/ReviewNotes.txt
# Stash attachment
kscm upload-attachment --target:stash --id:1030 --file:./Reports/ReviewNotes.txt --stash-scope:localdownload-attachment
Download an attachment from a repo changelist, workspace changelist, or stash.
Syntax
text
kscm download-attachment --target:repo|workspace-cl|stash --key:<key> --out:<path> [options]Required options
--target:repo|workspace-cl|stashAttachment target.--key:<key>Attachment key.--out:<path>Output file or directory.--clid:<id>Changelist id (repo/workspace-cl scopes).--id:<number>Numeric stash ID (stash scope).
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--stash-scope:all|local|remoteRestrict stash scope (default: all).--revision:<n>Stash revision (0 = latest, otherwise 1..N).
Use case
Use download-attachment to retrieve a file attached to a changelist or stash.
Notes:
- If
--outis a directory (or ends with a slash), the attachment is saved as<key>inside it.
Examples
text
# Repo changelist attachment
kscm download-attachment --target:repo --clid:12345 --key:ReviewNotes.txt --out:./Downloads/ReviewNotes.txt
# Workspace changelist attachment
kscm download-attachment --target:workspace-cl --clid:default --key:ReviewNotes.txt --out:./Downloads/
# Stash attachment
kscm download-attachment --target:stash --id:1030 --key:ReviewNotes.txt --out:./Downloads/ --stash-scope:remotedelete-attachment
Delete an attachment from a repo changelist, workspace changelist, or stash.
Syntax
text
kscm delete-attachment --target:repo|workspace-cl|stash --key:<key> [options]Required options
--target:repo|workspace-cl|stashAttachment target.--key:<key>Attachment key.--clid:<id>Changelist id (repo/workspace-cl scopes).--id:<number>Numeric stash ID (stash scope).
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--stash-scope:all|local|remoteRestrict stash scope (default: all).--revision:<n>Stash revision (0 = latest, otherwise 1..N).
Use case
Use delete-attachment to remove an attachment.
Examples
text
# Repo changelist attachment
kscm delete-attachment --target:repo --clid:12345 --key:ReviewNotes.txt
# Stash attachment
kscm delete-attachment --target:stash --id:1030 --key:ReviewNotes.txt --stash-scope:locallist-stashes
List stashed changelists.
Syntax
text
kscm list-stashes [options]Required options
None.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--scope:all|local|remoteFilter by stash scope (default: all).--createdby:<text>Filter by stash author (substring match).--repomap:<name>Filter by repository map name.--tags:<csv-or-json>Filter by tags extracted from description (match any tag).
Use case
Use list-stashes to find stash IDs to inspect with show-stash or restore with retrieve-stash, especially when switching machines or recovering work.
Notes:
- Always refreshes remote stashes from the server before listing.
- Output does not include stash GUIDs or branches.
--scopecontrols where KSCM searches:localsearches stashes stored locally on this machine.remotesearches stashes stored on the server.allsearches both.
- Only stashes accessible to your user account will be shown.
--tagssupports CSV (for examplereview,urgent) or JSON (for example["review","urgent"]).
Example
text
# List all stashes
kscm list-stashes
# Only remote stashes created by a user, with any matching tag
kscm list-stashes --scope:remote --createdby:alice --tags:review,urgentstash-changelist
Stash a workspace changelist.
stash-changelist creates a new stash from a changelist. Stash IDs are assigned by the server, but you can target an existing stash by ID to replace it or add a new revision.
Syntax
text
kscm stash-changelist --clid:<id> --description:<text> [options]Required options
--clid:<id>Workspace changelist id (or name likedefault).--description:<text>Stash description.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--scope:local|remoteStash scope (default: local).--id:<number>Update an existing stash by numeric ID.--replace:true|falseReplace an existing stash when using--id(default: false).--owners:<csv-or-json>Owners (usernames, CSV or JSON list).--viewers:<csv-or-json>Viewers (usernames, CSV or JSON list).--updatecldesc:true|falseUpdate changelist description (default: false).
Use case
Use stash-changelist to save work in progress from a changelist into a local or remote stash.
Notes:
- Stash IDs are server-assigned;
--idonly selects an existing stash to replace or revise. --replace:falsecreates a new revision of the selected stash ID.- Remote stashes always refresh from the server before stashing.
Example
text
# Stash a changelist locally
kscm stash-changelist --clid:123 --description:"WIP: refactor"
# Stash a changelist remotely
kscm stash-changelist --clid:123 --description:"WIP: refactor" --scope:remote
# Add a new revision to an existing stash by ID
kscm stash-changelist --clid:123 --description:"WIP: refactor v2" --id:1030
# Replace an existing stash by ID
kscm stash-changelist --clid:123 --description:"WIP: reset" --id:1030 --replace:trueshow-stash
Show stash details and operations.
show-stash prints metadata and operations for a stash ID. If a stash has multiple revisions, you can show a specific revision by number (1..N, where N is the latest).
Syntax
text
kscm show-stash --id:<number> [options]Required options
--id:<number>Numeric stash ID.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--scope:all|local|remoteRestrict search to a stash scope (default: all).--revision:<n>Show a specific stash revision (0 = latest).
Use case
Use show-stash to inspect what a stash contains before retrieving it, or to review previous revisions of a stash.
Notes:
- Always refreshes remote stashes from the server before showing.
- Prints all operations for the selected stash (or revision).
- If multiple stashes match the same id, use
--scope(and/or--revision) to disambiguate.
Example
text
# Show a stash by ID
kscm show-stash --id:1030
# Only search remote stashes
kscm show-stash --id:1030 --scope:remote
# Show revision 1 (oldest) of a stash
kscm show-stash --id:1030 --revision:1edit-stash
Edit a stash description and access lists.
edit-stash updates the description and/or access lists (owners/viewers) for a stash. You can either replace the entire description, or replace a single tag within the existing description.
Syntax
text
kscm edit-stash --id:<number> --description:<text> [options]
kscm edit-stash --id:<number> --replace-tag:<tag> [--tag-value:<value>] [options]Required options
--id:<number>Numeric stash ID.--description:<text>New description.--replace-tag:<tag>Replace a tag in the existing description (use without--description).
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--scope:local|remoteRestrict search to a stash scope (default:local).--owners:<csv>Owners (usernames, CSV or JSON list).--viewers:<csv>Viewers (usernames, CSV or JSON list).--tag-value:<value>Tag value (omit or empty to remove the tag).
Use case
Use edit-stash to update stash metadata without re-stashing files, or to set tags in the description for filters and automation.
Notes:
- Omitting
--ownersor--viewerspreserves the existing list. - Use
--owners:[]or--viewers:[]to clear a list. - Always refreshes remote stashes from the server before editing remotely.
- Tag replacement adds the tag if it is missing.
- If
--tag-valueis omitted or empty, the tag is removed.
Example
text
# Update description and preserve owners/viewers
kscm edit-stash --id:1030 --description:"Updated description"
# Replace or add a tag in the existing description
kscm edit-stash --id:1030 --replace-tag:review --tag-value:alice
# Remove a tag
kscm edit-stash --id:1030 --replace-tag:reviewdelete-stash
Delete a stash by ID.
Syntax
text
kscm delete-stash --id:<number> [options]Required options
--id:<number>Numeric stash ID.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--scope:local|remoteRestrict search to a stash scope (default: local).
Use case
Use delete-stash to remove a stash by ID.
Notes:
- Always refreshes remote stashes from the server before deleting remotely.
Example
text
# Delete a local stash by ID
kscm delete-stash --id:1030
# Delete a remote stash by numeric ID
kscm delete-stash --id:1030 --scope:remoteretrieve-stash
Retrieve a stashed changelist into the workspace.
Syntax
text
kscm retrieve-stash --id:<number> --boundcl:replace|new --conflicts:backup|overwrite [options]Required options
--id:<number>Numeric stash ID.--boundcl:replace|newHow to handle a stash bound to a local changelist.--conflicts:backup|overwriteHow to handle local conflicts.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).--scope:all|local|remoteRestrict search to a stash scope (default: all).--revision:<guid>Retrieve a specific stash revision by GUID.
Use case
Use retrieve-stash to restore work from a stash back into your workspace (for example, after switching machines, after a clean sync, or when recovering from local issues).
Notes:
- Always refreshes remote stashes from the server before retrieving.
- If the stash is bound to a local changelist,
--boundcl:replaceuses it and--boundcl:newcreates a new changelist. --conflictscontrols what happens when applying a stash would overwrite local workspace changes:--conflicts:backupcreates a local backup stash containing your current local changes, then applies the selected stash.--conflicts:overwritediscards your current local changes and applies the selected stash.
Example
text
# Retrieve a stash, creating a new changelist if needed, backing up conflicts
kscm retrieve-stash --id:1030 --boundcl:new --conflicts:backupsubmit-changelist
Submit a workspace changelist.
Syntax
text
kscm submit-changelist --clid:<id> --description:<text> [options]Required options
--clid:<id>Workspace changelist id.--description:<text>Description.
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).
Use case
Use submit-changelist to publish the operations in a changelist as a new revisions on the server for the files that are part of that changelist.
Example
text
cd ~/Dev/MyWorkspace
# Submit a changelist by id
kscm submit-changelist --clid:123 --description:"Fix build warnings"submit-files
Submit specified files.
Syntax
text
kscm submit-files --file:<path> --description:<text> [options]
kscm submit-files --files:<list> --description:<text> [options]Required options
--description:<text>Description.--file:<path>Single file path, or--files:<list>File list: JSON (["a","b"]) or CSV (a,b).
Optional options
--workspace:<name>Workspace name (optional if inferred from the current directory).
Use case
Use submit-files to submit new revisions for a specific set of files without explicitly managing a changelist.
Notes:
- File paths are interpreted relative to the current directory. KSCM resolves them to full paths before processing.
Example
text
cd ~/Dev/MyWorkspace
# Submit a single file
kscm submit-files --file:./Source/MyFile.cpp --description:"Quick fix"
# Submit multiple files
kscm submit-files --files:{"./a.txt","./b.txt"} --description:"Batch fix"export-skills
Export embedded skill files to a directory.
Syntax
text
kscm export-skills --destination:<directory>Required options
--destination:<directory>Export root directory.
Use case
Use export-skills as a quick way to access the skill pack supported by the current KSCM executable. Files are written below <destination>/<skill-name>/; existing skill files are replaced with the version embedded in that executable.
The command does not require authentication or a workspace.
Example
text
# Export the skill pack for this KSCM version
kscm export-skills --destination:./.codex/skills