Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/allowed-workflow-secrets.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
CHITTYCONNECT_API_KEY
GITHUB_TOKEN
ORG_AUTOMATION_TOKEN
CHITTY_GATEWAY_TOKEN
CHITTY_AGENT_TOKEN
OP_SERVICE_ACCOUNT_TOKEN
CHITTYCONNECT_BROKER_TOKEN
29 changes: 29 additions & 0 deletions .github/secret-catalog.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"vault": "ChittyOS",
"secrets": [
{
"name": "ORG_AUTOMATION_TOKEN",
"op_ref": "op://ChittyOS/GitHub Automation Token/token",
"rotation_days": 30,
"owner": "platform-security"
},
{
"name": "CHITTYCONNECT_BROKER_TOKEN",
"op_ref": "op://ChittyOS/ChittyConnect Broker Token/token",
"rotation_days": 30,
"owner": "platform-security"
},
{
"name": "CHITTY_GATEWAY_TOKEN",
"op_ref": "op://ChittyOS/ChittyGateway API Token/token",
"rotation_days": 30,
"owner": "platform-security"
},
{
"name": "CHITTY_AGENT_TOKEN",
"op_ref": "op://ChittyOS/ChittyAgent Orchestrator Token/token",
"rotation_days": 30,
"owner": "platform-security"
}
]
}
46 changes: 46 additions & 0 deletions .github/workflows/adversarial-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Adversarial Review Orchestrator

on:
pull_request_target:
types: [opened, reopened, synchronize, ready_for_review]

permissions:
contents: read
pull-requests: write
issues: write

jobs:
orchestrate:
runs-on: ubuntu-latest
steps:
- name: Request Reviewer Agents
uses: actions/github-script@v7
with:
script: |
const reviewers = ["coderabbitai"];
try {
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
reviewers
});
core.info(`Requested reviewers: ${reviewers.join(", ")}`);
} catch (error) {
core.warning(`Reviewer request failed: ${error.message}`);
}
- name: Trigger Bot Review Comments
uses: actions/github-script@v7
with:
script: |
const lines = [
"@coderabbitai review",
"@copilot review",
"Adversarial review request: evaluate security, policy bypass paths, and regression risk."
];
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
body: lines.join("\n")
});
11 changes: 11 additions & 0 deletions .github/workflows/governance-gates.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: Governance Gates

on:
pull_request:
push:
branches: [ main ]

jobs:
gates:
uses: ./.github/workflows/reusable-governance-gates.yml

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Point governance gate to an existing reusable workflow

The gates job calls ./.github/workflows/reusable-governance-gates.yml, but that file is not present in this repo (verified via repo-wide file search), so every pull_request/push run of this workflow will fail before any checks execute. This breaks the new governance gate path and can block merges if the check is required.

Useful? React with 👍 / 👎.

secrets: inherit
17 changes: 17 additions & 0 deletions .github/workflows/identity-context-onboarding.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Identity & Context Onboarding Gate

on:
pull_request:
push:
branches: [ main ]

jobs:
identity-onboarding:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate ChittyID Context Onboarding
shell: bash
run: |
set -euo pipefail
bash scripts/check-chitty-onboarding.sh .chittyconnect.yml

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Invoke an onboarding script that exists in the repository

This workflow executes scripts/check-chitty-onboarding.sh, but that script is not in the repository (repo-wide search finds no such path), so the onboarding job will fail with No such file or directory on every PR and push. If this gate is required, it will create a permanent CI blocker.

Useful? React with 👍 / 👎.

56 changes: 56 additions & 0 deletions .github/workflows/onepassword-rotation-audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: 1Password Rotation Audit

on:
workflow_dispatch:
schedule:
- cron: "25 3 * * *"

permissions:
contents: read
issues: write

jobs:
audit:
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ secrets.ORG_AUTOMATION_TOKEN }}
OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Validate required secrets
shell: bash
run: |
set -euo pipefail
[[ -n "${GH_TOKEN:-}" ]] || { echo "Missing ORG_AUTOMATION_TOKEN"; exit 1; }
[[ -n "${OP_SERVICE_ACCOUNT_TOKEN:-}" ]] || { echo "Missing OP_SERVICE_ACCOUNT_TOKEN"; exit 1; }
- name: Install 1Password CLI
uses: 1password/install-cli-action@v1
- name: Run rotation audit
id: rotation
shell: bash
run: |
set -euo pipefail
mkdir -p reports/secret-rotation
if bash scripts/onepassword-rotation-audit.sh .github/secret-catalog.json reports/secret-rotation; then

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Call a rotation audit script that is actually present

The rotation step runs scripts/onepassword-rotation-audit.sh, but there is no script at that path in the repo, so the scheduled/manual audit job will always report failure due to a missing executable rather than real rotation status. This makes the new audit workflow non-functional and can generate noisy issue churn.

Useful? React with 👍 / 👎.

echo "status=pass" >> "$GITHUB_OUTPUT"
else
echo "status=fail" >> "$GITHUB_OUTPUT"
fi
- name: Upload rotation report
uses: actions/upload-artifact@v4
with:
name: onepassword-rotation-report
path: reports/secret-rotation
- name: Open or update rotation issue on failure
if: ${{ steps.rotation.outputs.status == 'fail' }}
shell: bash
run: |
set -euo pipefail
title="[Security] 1Password rotation policy violations"
body="$(cat reports/secret-rotation/latest.md)"
existing="$(gh issue list --state open --search "\"${title}\" in:title" --json number,title --jq '.[] | select(.title=="'"${title}"'") | .number' | head -n1 || true)"
if [[ -n "${existing}" ]]; then
gh issue comment "${existing}" --body "${body}" >/dev/null
else
gh issue create --title "${title}" --body "${body}" >/dev/null
fi
12 changes: 12 additions & 0 deletions .gitleaks.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
title = "chittycommand-gitleaks-config"

[allowlist]
description = "Known test/example files with non-production credential-like strings"
paths = [
'''_ext/chittyid/chittycontext\.config\.js''',
'''_ext/chittyid/monitoring/scripts/setup-monitoring\.sh''',
'''_ext/chittyid/test-security\.sh''',
'''_ext/chittyid/tests/integration/chittyrouter-gateway\.test\.js''',
'''_ext/chittyid/tests/penetration/bypass-attempts\.test\.js''',
'''_ext/chittyops/project-awareness/test/qa-integration-tests\.js''',
]
Loading