Plastic SCM Integration integrates Plastic SCM / Unity Version Control into JetBrains Rider (and other IntelliJ-based IDEs) as a first-class VCS, so it works through the same UI you use for Git:
- Plastic SCM tool window: a dedicated commit panel modelled on the Commit tool window (change tree with checkboxes, unversioned files, diff/undo/refresh toolbar, comment box and Check In button). It only shows Plastic items, so it sits next to Git's Commit tool window in projects that use both. Right-clicking files opens the same context menu as Local Changes (Check In File, Rollback, Show Diff, Jump to Source, Delete, changelists, patches, shelve, Local History). The small AI button next to Check In drafts a check-in comment using your own OpenAI, Anthropic Claude, or OpenAI-compatible endpoint settings
- Check in with a comment; checked unversioned files are added (
cm add) first - Plastic changes also show up in the IDE's shared local-changes model (gutter markers, file colors)
- Rollback (
cm undo), diff against the base revision, gutter change markers - Show History for a file and compare revisions (
cm history/cm cat) - Annotate / blame (
cm annotate) - Update Project (
cm update) - Branch widget in the status bar plus VCS | Plastic SCM | Switch Branch / New Branch
Requires the Plastic SCM command line client (cm), installed with Unity Version Control, and an already
configured/authenticated workspace. The cm path is auto-detected and can be overridden under
Settings > Version Control > Plastic SCM.
- Install Unity Version Control (Plastic SCM) and make sure
cmworks in a terminal (cm version). - Open a solution that lives inside a Plastic workspace (a folder containing
.plastic). - Rider detects the workspace and offers to register it; or add it manually under Settings > Version Control > Directory Mappings with VCS Plastic SCM.
Open Settings > Version Control > Plastic SCM and choose OpenAI, Anthropic Claude, or an
OpenAI-compatible endpoint. Enter the model identifier and your own provider API key using the explicit
key controls. Local endpoints accept a configurable /v1 base URL and an optional key. OpenAI and Claude
use their native provider APIs. Your provider account is billed separately from any IDE AI subscription.
In the Plastic SCM tool window, check the files to include and click the AI button next to Check In. Its tooltip shows the destination and model the request goes to; clicking it again while it runs cancels. Only those checked Plastic files' text diffs are prepared; unchecked files and Git changes are not included. New files contribute their text. Generation never starts automatically and never checks files in. Review the generated message before Check In.
- Selected code leaves the IDE for the displayed destination. An OpenAI-compatible endpoint may be remote: only an endpoint you actually run on this computer is local. HTTPS is required except for exact loopback hosts.
- Binary files, symbolic links, obvious credential files, and oversized selections are rejected without a request. Filename checks cannot guarantee that ordinary source files contain no secrets; review what you check.
- Files read from disk and historical revisions must be UTF-8 text. Historical content is retrieved through a
temporary
cm catfile before its bounded read, so it may use temporary disk space even when rejected. - Cancel stops pending work. A late response cannot replace a message you edited or a different checked selection.
- Keys belong only to this plugin and provider/endpoint; they are never imported from another plugin or saved in project/XML settings or logs. They use the IDE PasswordSafe subject to its configured storage policy.
- On IDE 2025.2, keys are deliberately session-only, including local IDE sessions, because older remote development backends cannot safely persist them. Re-enter them after restarting. IDE 2025.3+ supports normal PasswordSafe storage. Empty key input does not erase an existing key; use the explicit remove control.
- Provider redirects and automatic request retries are disabled. A missing key, timeout, rate limit, invalid model, or malformed response leaves your existing comment intact. Retry manually when appropriate.
- Generation is blocked when JVM HTTP diagnostics, automatic POST retries, or disabled TLS hostname verification could weaken these protections. Remove the indicated JVM overrides and restart the IDE before trying again.
./gradlew testruns parser, AI protocol, selected-diff, credential-scope, and generation-safety tests using synthetic data../gradlew buildPluginproduces the installable zip inbuild/distributions../gradlew runIdestarts a sandbox IDE with the plugin. The build compiles against the IntelliJ Platform (platformVersioningradle.properties); the plugin only uses platform VCS APIs, so the same zip installs in Rider.
Everything talks to Plastic through the cm CLI (src/main/kotlin/.../cli/PlasticCli.kt). Output is requested in
machine-readable formats and parsed in PlasticStatusParser / PlasticOutputParsers.
pluginVersioningradle.propertiesis the stable release version, currently1.0.0.- Every successful push to
mainpublishes a GitHub prerelease after build, tests, code inspections, and plugin verification pass. Development versions use the next patch plus the workflow run and attempt, for example1.0.1-dev.123.1. Each tag points to the exact tested commit and contains the installable plugin ZIP. A newer push can cancel an older build, so only completed successful builds are released. - Download development builds from the GitHub releases list.
The
releases/latestlink below deliberately selects stable releases, not development builds. - To create a stable GitHub release, update
pluginVersionas needed and run Build frommainwith publish_stable_release enabled. This publishesv<pluginVersion>only after the same checks pass. Existing tags are never reused or moved, and release assets are never overwritten. If publication fails after tag creation, inspect the tag/release before retrying a stable version. Pull requests and ordinary manual builds do not publish. - JetBrains Marketplace publishing is separate. Run Publish to JetBrains Marketplace from
mainand enter an existing stable GitHub release tag. The tag must match itsgradle.propertiesversion. This uses the existing signing and Marketplace secrets and re-runs tests/verification before publishing. Do not republish a version already uploaded to Marketplace; choose a new stable version for the next Marketplace update. - Automated GitHub releases require only the workflow's built-in
GITHUB_TOKEN; no new token is needed.
-
Using the IDE built-in plugin system:
Settings/Preferences > Plugins > Marketplace > Search for "Plastic SCM Integration" > Install
-
Using JetBrains Marketplace:
Go to JetBrains Marketplace and install it by clicking the Install to ... button in case your IDE is running.
You can also download the latest release from JetBrains Marketplace and install it manually using Settings/Preferences > Plugins > ⚙️ > Install plugin from disk...
-
Manually:
Download the latest release and install it manually using Settings/Preferences > Plugins > ⚙️ > Install plugin from disk...
Plugin based on the IntelliJ Platform Plugin Template.