feat: Add --identity=false flag to disable authentication @osterman (#1765)
## whatThis PR adds support for explicitly disabling Atmos identity authentication via --identity=false (or ATMOS_IDENTITY=false), allowing users to fall back to standard cloud provider SDK credential resolution.
Changes
-
Core Implementation
- Added
IdentityFlagDisabledValueconstant (__DISABLED__) - Implemented
normalizeIdentityValue()to detect boolean false values (false,0,no,off) - Updated
TerraformPreHook()to check for disabled state and skip authentication
- Added
-
Testing (80-100% coverage)
TestNormalizeIdentityValue- 20 test cases covering all boolean variantsTestGetIdentityFromFlags- 13 test cases including disabled scenariosTestIsAuthenticationDisabled- 5 test cases for sentinel detectionTestTerraformPreHook_DisabledIdentity- 3 scenarios with/without auth config- All existing tests continue to pass
-
Documentation
- New section in auth docs: "Disabling Identity Authentication"
- Updated terraform command docs with disable examples
- Updated all describe command docs with disable examples
- Updated internal technical documentation
- Added comprehensive PRD at
docs/prd/disable-identity-flag.md - Made all language cloud-provider agnostic (not AWS-specific)
why
Users needed a way to disable Atmos authentication in CI/CD environments (especially GitHub Actions with OIDC) where different credential mechanisms are preferred. Previously, this required complex workarounds:
- Using
yqcommands to remove auth configuration at runtime - Maintaining separate
atmos.yamlfiles for different environments - No clean solution for mixed local/CI environments
This feature enables users to:
- Use GitHub Actions OIDC credentials instead of Atmos-managed identities
- Temporarily use local cloud provider profiles during development
- Test without Atmos authentication
- Support mixed environments seamlessly
Use Case Example
# GitHub Actions workflow
- name: Configure AWS credentials via OIDC
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::123456789012:role/GitHubActionsRole
aws-region: us-east-1
- name: Deploy with Atmos (using GitHub OIDC credentials)
env:
ATMOS_IDENTITY: false # Disable Atmos auth, use GitHub-provided credentials
run: atmos terraform apply mycomponent --stack=prodreferences
- PRD:
docs/prd/disable-identity-flag.md - Resolves use case from Slack discussion about GitHub Actions OIDC authentication
- Related to RFC: Atmos Profiles (this provides interim solution)
feat: Add agent-developer meta-agent for scaling Atmos with specialized agents @osterman (#1761)
## what- Added agent-developer meta-agent for creating and maintaining Claude agents
- Established agent-per-subsystem pattern for scaling Atmos development
- Implemented self-updating mechanism with PRD dependency tracking
- Added mandatory user confirmation for all agent/PRD modifications
- Created comprehensive agent architecture PRD documentation
why
- Scale Atmos development through specialized domain expertise as core functionality grows
- Ensure agents always implement current architectural patterns via PRD awareness
- Maintain consistency across codebase with focused, self-maintaining agents
- Provide human oversight for all architectural changes via user confirmation
- Establish foundation for creating subsystem-specific agents (command-registry, cobra-flag, stack-processor, etc.)
references
- Related PRD:
docs/prd/claude-agent-architecture.md- Agent architecture patterns - Implements strategic vision for agent-per-subsystem development model
- Foundation for future specialized agents as Atmos subsystems mature
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
Summary by CodeRabbit
-
Documentation
- Added comprehensive Claude Agents framework documentation, including architecture, development guidelines, and coordination patterns.
-
Chores
- Updated GitHub Actions workflows to validate multiple markdown files with enhanced size checking capabilities.
🚀 Enhancements
fix: Make --chdir flag work with terraform/helmfile/packer commands @osterman (#1767)
## what- Fixed
--chdirflag to work correctly with terraform, helmfile, and packer commands - Added manual argument parsing for
--chdir/-Cflags when Cobra flag parsing is disabled
why
- Commands with
DisableFlagParsing=true(terraform, helmfile, packer) were not processing the--chdirflag beforeatmos.yamlwas loaded - Cobra doesn't parse flags when
DisableFlagParsing=true, butPersistentPreRunruns before the command's Run function where flags would be manually parsed - This caused
--chdirto be ignored, making it impossible to run these commands from subdirectories
references
fix: AWS user identity should reuse valid session credentials instead of regenerating @osterman (#1760)
## what- Fixed AWS user identity authentication to check for and reuse existing valid session credentials before generating new ones
- AWS user identity
Authenticate()method now callsLoadCredentials()first to check for existing valid session credentials in AWS files - Only generates new session tokens via
GetSessionTokenSTS API call when no valid credentials exist or when they have expired - Added comprehensive tests to verify credential reuse behavior and expiration handling
why
- The previous implementation always called
GetSessionTokento generate new session tokens, even when valid session credentials already existed - This caused authentication failures in terraform commands, workflows, and custom commands when base credentials were expired or invalid
- Users reported that
atmos auth execworked correctly butatmos terraform planfailed with "InvalidClientTokenId: The security token included in the request is invalid" - The issue occurred because each authentication attempt tried to generate new tokens using potentially expired base credentials, rather than reusing valid existing session credentials
- This fix prevents unnecessary AWS STS API calls and authentication failures by properly reusing valid credentials across all command types
references
- Related to previous session token keyring fix in PR #1757
- Fixes authentication failures reported where terraform/workflow commands failed while auth exec worked
- Impacts all authentication flows: auth exec, terraform commands, workflows, and custom commands