Introduction
CircleCI contexts are named collections of environment variables that can be shared across multiple projects. They provide a secure way to store secrets like API keys, credentials, and configuration values that multiple pipelines need. When a pipeline references a context that doesn't exist, has been deleted, or the user lacks permission to access, the job fails with "Context not found" error. This error is common when onboarding new projects, migrating configurations between organizations, or when context permissions aren't properly configured. Understanding how to create, manage, and troubleshoot contexts is essential for secure and efficient CI/CD workflows.
Symptoms
When a CircleCI context is not found, you will observe:
- Pipeline fails immediately with "Context not found" error
- Job shows "Unauthorized" or "Context does not exist" message
- Environment variables from the context are unavailable
- Builds that previously worked suddenly start failing
CircleCI UI shows:
``
Error: Context not found
The context "production-env" was not found
Or in the build logs:
``
#!/bin/bash -eo pipefail
Error: Context 'my-context' not found or access denied
API response:
``json
{
"message": "Context not found",
"context_name": "production-deploy"
}
Common Causes
- 1.Context not created - Referenced context doesn't exist in organization
- 2.Context deleted - Previously existing context was removed
- 3.Wrong context name - Typo or case sensitivity mismatch
- 4.Insufficient permissions - User lacks context access
- 5.Wrong organization - Context exists in different org
- 6.Environment variable not in context - Variable missing from context
- 7.Context restricted - Security groups prevent access
- 8.API token lacks scope - Token doesn't have context permissions
- 9.Project not authorized - Project can't access organization contexts
- 10.CircleCI outage - Service temporarily unavailable
Step-by-Step Fix
Step 1: Verify Context Exists
Check if the context exists in CircleCI:
- 1.Via CircleCI UI:
- 2.Navigate to your organization:
app.circleci.com/settings/org/your-org - 3.Click "Contexts" in the left sidebar
- 4.Look for the context name referenced in your config
Via CircleCI CLI: ```bash # List all contexts in organization circleci context list --org-slug github/your-org
# Get specific context details circleci context show --org-slug github/your-org --context production-env ```
Via CircleCI API:
``bash
# List contexts using API
curl -s -H "Circle-Token: $CIRCLECI_TOKEN" \
"https://circleci.com/api/v2/context?owner-id=your-org-id" | jq '.items[] | .name'
If the context doesn't exist, you'll need to create it.
Step 2: Check Context Name in Config
Verify the context name matches exactly:
# .circleci/config.yml
jobs:
deploy:
docker:
- image: cimg/base:stable
context:
- production-env # Check exact name (case-sensitive!)
steps:
- run: echo "Deploying..."Common naming mistakes: ```yaml # WRONG: Case mismatch context: production-Env # Context is named "production-env"
# WRONG: Extra spaces context: " production-env " # Leading/trailing spaces
# WRONG: Using slug instead of name context: github/your-org/production-env # Just use name
# CORRECT: Exact match context: production-env ```
Step 3: Create Missing Context
If the context doesn't exist, create it:
- 1.Via CircleCI UI:
- 2.Go to Organization Settings > Contexts
- 3.Click "Create Context"
- 4.Enter name (e.g., "production-env")
- 5.Add environment variables
- 6.Save the context
Via CircleCI CLI: ```bash # Create new context circleci context create --org-slug github/your-org --context production-env
# Add environment variables circleci context store-secret --org-slug github/your-org \ --context production-env \ --env-var AWS_ACCESS_KEY_ID \ --secret "AKIAIOSFODNN7EXAMPLE"
circleci context store-secret --org-slug github/your-org \ --context production-env \ --env-var AWS_SECRET_ACCESS_KEY \ --secret "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" ```
Via CircleCI API: ```bash # Create context curl -X POST -H "Circle-Token: $CIRCLECI_TOKEN" \ -H "Content-Type: application/json" \ "https://circleci.com/api/v2/context" \ -d '{ "name": "production-env", "owner": { "type": "organization", "id": "your-org-id" } }'
# Add environment variable curl -X PUT -H "Circle-Token: $CIRCLECI_TOKEN" \ -H "Content-Type: application/json" \ "https://circleci.com/api/v2/context/{context-id}/environment-variable/AWS_ACCESS_KEY_ID" \ -d '{"value": "AKIAIOSFODNN7EXAMPLE"}' ```
Step 4: Verify User Permissions
Check if your user has access to the context:
```bash # Check your user permissions circleci user current --org-slug github/your-org
# List contexts you can access circleci context list --org-slug github/your-org ```
Required permissions: - Organization member (at least) - For restricted contexts: Must be in the allowed security group
- 1.To grant access to restricted contexts:
- 2.Go to Organization Settings > Contexts
- 3.Click on the context name
- 4.Click "Restrict Access"
- 5.Add the appropriate security groups
- 6.Ensure your user is in one of those groups
Step 5: Verify Project Authorization
Ensure the project can access organization contexts:
# Check project settings
circleci project info --project-slug github/your-org/your-project- 1.Via CircleCI UI:
- 2.Go to Project Settings
- 3.Check "Advanced" settings
- 4.Ensure "Pass secrets to builds from forked pull requests" is configured correctly
- 5.Verify the project is owned by the correct organization
Step 6: Check Environment Variables
Verify all required variables exist in the context:
# List environment variables in context
circleci context env-var list --org-slug github/your-org --context production-envExpected output:
``
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
DATABASE_URL
API_KEY
Add missing variables:
``bash
circleci context store-secret --org-slug github/your-org \
--context production-env \
--env-var DATABASE_URL \
--secret "postgresql://user:pass@host:5432/db"
Step 7: Test Context Access
Test that the context works correctly:
```yaml # Create test pipeline # .circleci/config.yml version: 2.1
jobs: test-context: docker: - image: cimg/base:stable context: - production-env steps: - run: name: Verify context variables command: | echo "Testing context access..." if [ -z "$AWS_ACCESS_KEY_ID" ]; then echo "ERROR: AWS_ACCESS_KEY_ID not set" exit 1 fi echo "Context variables available" echo "AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:0:8}..."
workflows: test: jobs: - test-context ```
Run the test: ```bash # Validate config circleci config validate
# Trigger build git push origin main
# Check build logs circleci build watch --project-slug github/your-org/your-project ```
Step 8: Handle Context Across Organizations
If using multiple organizations:
```bash # List contexts in each org circleci context list --org-slug github/org-a circleci context list --org-slug github/org-b
# Create context in correct organization circleci context create --org-slug github/your-org --context production-env
# Or update pipeline to reference correct org's context ```
For cross-org access, contexts must be created in each organization separately.
Verification
After fixing, verify context access works:
```bash # Trigger new build circleci run --project-slug github/your-org/your-project
# Watch build logs circleci build watch
# Verify context variables are injected # In build logs, should see: # "Setting environment variables from context: production-env" ```
Test with API: ```bash # Get context details curl -s -H "Circle-Token: $CIRCLECI_TOKEN" \ "https://circleci.com/api/v2/context?owner-slug=github/your-org&context-name=production-env" | jq '.'
# Expected response: { "id": "...", "name": "production-env", "created_at": "..." } ```
Prevention
To prevent context issues:
- 1.Document context dependencies:
- 2.```yaml
- 3.# In project README or docs
- 4.# Required Contexts:
- 5.# - production-env: Contains AWS credentials, database URL
- 6.# - docker-creds: Contains Docker Hub login
- 7.
` - 8.Use context validation script:
- 9.```bash
- 10.#!/bin/bash
- 11.# validate-contexts.sh
- 12.REQUIRED_VARS=("AWS_ACCESS_KEY_ID" "DATABASE_URL" "API_KEY")
- 13.for var in "${REQUIRED_VARS[@]}"; do
- 14.if [ -z "${!var}" ]; then
- 15.echo "ERROR: $var not set in context"
- 16.exit 1
- 17.fi
- 18.done
- 19.
` - 20.Implement context-as-code:
- 21.```yaml
- 22.# contexts.yaml - Define contexts declaratively
- 23.contexts:
- 24.production-env:
- 25.variables:
- 26.- name: AWS_ACCESS_KEY_ID
- 27.source: vault://secrets/aws/access_key_id
- 28.- name: DATABASE_URL
- 29.source: vault://secrets/database/url
- 30.
` - 31.Set up context monitoring:
- 32.```bash
- 33.# Check context exists before critical deployments
- 34.circleci context show --org-slug github/your-org --context production-env || exit 1
- 35.
` - 36.Use naming conventions:
- 37.
` - 38.# Good naming: {environment}-{purpose}
- 39.- production-deploy
- 40.- staging-deploy
- 41.- development-deploy
- 42.
` - 43.Limit context access:
- 44.- Use security groups to restrict who can access contexts
- 45.- Review access regularly
- 46.Backup context variables:
- 47.```bash
- 48.# Export context variables (encrypted)
- 49.circleci context env-var list --org-slug github/your-org --context production-env > context-backup.txt
- 50.
` - 51.Use pipeline parameters for flexibility:
- 52.```yaml
- 53.# Allow context override via parameters
- 54.parameters:
- 55.context_name:
- 56.type: string
- 57.default: production-env
jobs: deploy: context: << parameters.context_name >> ```
Related Articles
- [Technical troubleshooting: Fix Cicd Artifact Upload Failed Storage Issue in C](cicd-artifact-upload-failed-storage)
- [Technical troubleshooting: Fix Cicd Code Quality Gate Failed Sonarqube Issue ](cicd-code-quality-gate-failed-sonarqube)
- [Technical troubleshooting: Fix Cicd Deployment Failed Health Check Issue in C](cicd-deployment-failed-health-check)
- [Technical troubleshooting: Fix Cicd Github Actions Workflow Queue Timeout in ](cicd-github-actions-workflow-queue-timeout)
- [Technical troubleshooting: Fix Cicd Gitlab Runner Stuck Pending Issue in CI/C](cicd-gitlab-runner-stuck-pending)
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "TechArticle", "headline": "CircleCI Context Not Found", "description": "Fix CircleCI context not found errors. Create contexts, manage permissions, and configure environment variables for pipelines.", "url": "https://www.fixwikihub.com/fix-cicd-circleci-context-not-found", "publisher": { "@type": "Organization", "name": "FixWikiHub", "url": "https://www.fixwikihub.com" }, "author": { "@type": "Person", "name": "FixWikiHub Editorial Team" }, "datePublished": "2025-12-12T07:47:06.938Z", "dateModified": "2025-12-12T07:47:06.938Z" } </script>