Skip to content

GitOps Configuration

GitOps (federated) configuration lets your team maintain its own config repository. This provides more autonomy while still respecting organization security boundaries.

  • Medium to large teams
  • Frequent configuration changes
  • Teams want PR-based review process
  • Need version history for compliance
  • Different teams need different update cycles
GitOps Federation Flow
GitOps Federation Flow
  1. Create your team’s config repository

    Create a new repository (public or private) to hold your team’s config.

    • Directorybackend-team-scc-config/
      • team-config.json
      • README.md
  2. Create team-config.json

    team-config.json
    {
    "schema_version": "1.0.0",
    "additional_plugins": [
    "scc-safety-net@sandboxed-code-official",
    "java-analyzer@internal-marketplace"
    ],
    "additional_mcp_servers": {
    "context7": {
    "type": "http",
    "url": "https://context7.com/api"
    }
    },
    "session": {
    "timeout_hours": 12
    }
    }
  3. Ask org admin to configure federation

    The org config needs to point to your repository:

    org-config.json (org admin adds this)
    {
    "profiles": {
    "backend": {
    "config_source": {
    "source": "github",
    "owner": "acme",
    "repo": "backend-team-scc-config"
    },
    "trust": {
    "inherit_org_marketplaces": true,
    "allow_additional_marketplaces": false
    }
    }
    }
    }
  4. Validate your config

    Terminal window
    scc org validate team-config.json
"config_source": {
"source": "github",
"owner": "org-name",
"repo": "team-config-repo",
"branch": "main",
"path": "team-config.json"
}

For private repos, org admin configures token auth.

"config_source": {
"source": "git",
"url": "git@gitlab.example.com:team/config.git",
"branch": "main"
}
"config_source": {
"source": "url",
"url": "https://config.example.com/team/backend.json",
"auth": {
"type": "bearer",
"token": "env:CONFIG_TOKEN"
}
}

Org admin controls what your federated config can do:

"trust": {
"inherit_org_marketplaces": true
}
  • true: Your team can use all org-approved marketplaces
  • false: Your team only uses marketplaces you define
"trust": {
"allow_additional_marketplaces": true,
"marketplace_source_patterns": [
"github.com/acme/**"
]
}
  • true: Your team can add custom marketplaces (within patterns)
  • false: Your team can only use org-defined marketplaces
team-config.json
{
"schema_version": "1.0.0",
"additional_plugins": [
"plugin-name@marketplace"
],
"additional_mcp_servers": {
"server-name": {
"type": "http",
"url": "https://..."
}
},
"marketplaces": {
"team-marketplace": {
"source": "github",
"owner": "acme",
"repo": "team-plugins"
}
},
"delegation": {
"allow_project_overrides": true,
"allow_additional_plugins": ["team-*"]
},
"session": {
"timeout_hours": 12,
"auto_resume": true
}
}
  1. Create a branch

    Terminal window
    git checkout -b add-new-plugin
  2. Edit team-config.json

    "additional_plugins": [
    "scc-safety-net@official",
    "new-tool@marketplace" // ← Added
    ]
  3. Validate locally

    Terminal window
    scc org validate team-config.json
  4. Create PR and get review

  5. Merge to main

  6. Developers get update

    Terminal window
    scc update
    # or automatic on next session start

Team configs are cached locally:

SettingDefaultDescription
Cache TTL24 hoursHow long before re-fetching
Force refreshscc updateImmediately fetch latest
Offline modeUses cacheWorks without network

Your config tries to use something the org doesn’t permit:

Terminal window
scc team validate

Common causes:

  • Adding a marketplace when allow_additional_marketplaces: false
  • Plugin matches org’s blocked_plugins pattern
  • Check repository URL is correct
  • Verify authentication token is valid (for private repos)
  • Ensure branch exists

Force refresh:

Terminal window
scc update --force

Or clear cache:

Terminal window
rm -rf ~/.cache/scc/team-config/
scc update