Codumentor logo Codumentor

SCM Push Plugin

The scm_push plugin gives the main agent a git_commit tool that creates real commits inside the credential-free sandbox. Those commits stay in the conversation's workspace overlay until a person clicks Push in the UI. The host-side push gateway then transports them using credentials the sandbox and the agent never see.

Requires Workspace Isolation and User Secrets.

Configuration

plugins:
  - module: codumentor.plugins.scm_push
    class: ScmPushPlugin
    priority: 25
    dependencies: ["workspace_isolation", "user_secrets"]
    args:
      enabled: true
OptionTypeDefaultDescription
enabledbooltrueEnable or disable the plugin.

Every git_commit message gets a Made with Codumentor trailer after a blank line.

What users do

  1. The agent commits with git_commit (stages all changes by default). Commits land in this session's overlay only — they are not pushed.
  2. The Push button in the chat header lights up.
  3. The user confirms the repo, branch, and SHA. Push runs on the host, never as an agent tool.

Bind a host-only push secret (HTTPS token or SSH key) in Settings → SCM Push, scoped to a repo (or glob), remote URL, and optional branch patterns. SSH bindings can also pin a host public key.

Until that binding exists — or while the secret it names is still empty — the dialog says so and its Push button stays disabled, so a missing credential is read before it is discovered. Readiness is answered by user_secrets' secret_store.has_host_secret, which reports only whether a value is set; the value itself is still read once, host-side, at push time.

Reviewing the changes

The dialog shows uncommitted work and pending commits for each repository. Review changes loads a per-file diff:

Commit identity (git_commit vs auto-commit)

git_commit stamps a real author. Resolution order:

  1. Settings → SCM Push — per-user name/email (the form pre-fills from the auth profile).
  2. Authenticated profile — display name and email, when available.
  3. Fallback"Codumentor (identity unset)" <codumentor@localhost>, with a warning in the tool result. Commits are never blocked on a missing identity.

This is not workspace isolation's integration.auto_commit. Auto-commit runs after an isolated subagent finishes and uses a generic "Codumentor" <codumentor@local> identity. It does not push and does not use the user's SCM Push identity.

Notes