The workspaces command displays all Shannon workspaces, including their status, completion state, and metadata. This is essential for managing multiple pentests and resuming interrupted workflows.
Basic Usage
No parameters required. The command automatically:
Ensures Shannon containers are running
Queries Temporal for all workflows
Loads workspace metadata from audit logs
Displays workspace status and progress
The command displays a formatted table with workspace information:
$ ./shannon workspaces
Shannon Workspaces:
┌─────────────────────┬──────────────────────┬────────────┬─────────────┬──────────────┐
│ Workspace │ URL │ Status │ Completed │ Last Updated │
├─────────────────────┼──────────────────────┼────────────┼─────────────┼──────────────┤
│ q1-2024-audit │ https://example.com │ Running │ 3/5 agents │ 2 hours ago │
│ juice-shop-test │ http://localhost:3000│ Completed │ 5/5 agents │ 1 day ago │
│ prod-security-scan │ https://app.acme.com │ Failed │ 2/5 agents │ 3 hours ago │
└─────────────────────┴──────────────────────┴────────────┴─────────────┴──────────────┘
Resume a workspace:
./shannon start URL= < ur l > REPO= < rep o > WORKSPACE= < nam e >
Workspace Types
Named Workspaces
Created when you specify WORKSPACE=<name>:
# Create named workspace
./shannon start URL=https://example.com REPO=my-repo WORKSPACE=q1-audit
# View workspaces
./shannon workspaces
# Shows: q1-audit
# Resume named workspace
./shannon start URL=https://example.com REPO=my-repo WORKSPACE=q1-audit
Benefits:
Easy to identify and resume
Descriptive names (e.g., “q1-2024-audit”, “pre-release-scan”)
Ideal for long-running or scheduled audits
Auto-Named Workspaces
Created automatically when WORKSPACE is not specified:
# Start without WORKSPACE parameter
./shannon start URL=https://example.com REPO=my-repo
# View workspaces
./shannon workspaces
# Shows: example.com_shannon-1234567890
# Resume using auto-generated name
./shannon start URL=https://example.com REPO=my-repo \
WORKSPACE=example.com_shannon-1234567890
Format: <hostname>_shannon-<timestamp>
Workspace Status
Running
Workflow is actively executing:
Status: Running
Completed: 3/5 agents
Current: vuln-analysis (injection, xss, auth)
Actions:
Monitor with ./shannon logs ID=<workspace-id>
View in Temporal UI: http://localhost:8233
Wait for completion or stop with ./shannon stop
Completed
All phases finished successfully:
Status: Completed
Completed: 5/5 agents
Report: repos/<repo>/deliverables/comprehensive_security_assessment_report.md
Actions:
Review deliverables in repos/<repo>/deliverables/
Analyze audit logs in audit-logs/<workspace-id>/
Run new pentest if target has changed
Failed
Workflow encountered non-retryable error:
Status: Failed
Completed: 2/5 agents
Error: AuthenticationError - Invalid API key
Actions:
Check error details in audit-logs/<workspace-id>/workflow.log
Fix configuration issues (API keys, credentials)
Resume from last successful agent
Paused (Rate Limited)
Workflow waiting for rate limit recovery:
Status: Paused
Completed: 3/5 agents
Retry: Next attempt in 15 minutes (rate limit recovery)
Actions:
Wait for automatic retry
Temporal will resume when rate limit clears
No manual intervention needed
Each workspace stores metadata in audit-logs/<workspace-id>/session.json:
{
"workspaceId" : "q1-audit" ,
"workflowId" : "q1-audit_shannon-1234567890" ,
"targetUrl" : "https://example.com" ,
"repositoryPath" : "/repos/my-repo" ,
"startTime" : "2024-03-05T10:00:00Z" ,
"completedAgents" : [ "pre-recon" , "recon" , "injection-vuln" ],
"status" : "running" ,
"metrics" : {
"totalTokens" : 1250000 ,
"totalCost" : 18.75 ,
"duration" : 7200
}
}
Resuming Workspaces
When you resume a workspace, Shannon:
Validates workspace exists - Checks session.json and deliverables
Loads completed agents - Skips already-finished agents
Verifies deliverables - Ensures previous outputs are valid
Restores git checkpoints - Returns repository to previous state
Continues from checkpoint - Resumes at first incomplete agent
Resume Example
# Initial run (interrupted after 2 agents)
./shannon start URL=https://example.com REPO=my-repo WORKSPACE=audit-1
# Completed: pre-recon, recon
# Interrupted at: injection-vuln
# Resume workflow
./shannon start URL=https://example.com REPO=my-repo WORKSPACE=audit-1
# Output:
# Resuming workspace: audit-1
# Found completed agents:
# ✓ pre-recon
# ✓ recon
# Skipping 2 agents
# Starting from: injection-vuln
# Workflow resumed: audit-1_resume_1234567890
Resume Validation
Shannon performs safety checks before resuming:
Checks that each completed agent has valid deliverable files: Checking deliverables:
✓ pre_recon_deliverable.md (valid)
✓ recon_deliverable.md (valid)
✗ injection_analysis_deliverable.md (missing)
Error: Deliverable missing for injection-vuln
Will re-run agent: injection-vuln
Git Checkpoint Restoration
Restores repository state from previous run: Restoring git checkpoint...
Reset branch: shannon-audit-1
Restored to commit: abc123
Incomplete Deliverable Cleanup
Removes partial or corrupted deliverables: Cleaning incomplete deliverables:
Removed: injection_analysis_deliverable.md (corrupted)
See Workspaces & Resume for detailed workflow.
Workspace Lifecycle
Managing Workspaces
List All Workspaces
View Workspace Logs
# Find workspace ID from workspaces list
./shannon workspaces
# Tail logs for specific workspace
./shannon logs ID=q1-audit_shannon-1234567890
Query Workspace Progress
Via Temporal Web UI:
Open http://localhost:8233
Find workflow by workspace ID
Click “Query” tab
Run getProgress query
View detailed progress JSON
Clean Up Workspaces
Workspace data is preserved until manually deleted:
# Stop containers (preserves workspace data)
./shannon stop
# Remove all data including workspaces
./shannon stop CLEAN= true
# Or manually delete workspace
rm -rf audit-logs/ < workspace-i d >
./shannon stop CLEAN=true removes all workspaces and their data permanently.
Back up important audit logs and deliverables first.
Integration with Other Commands
Start → Workspaces → Logs
Typical workflow monitoring pattern:
# 1. Start pentest
./shannon start URL=https://example.com REPO=my-repo WORKSPACE=audit
# 2. List workspaces to check status
./shannon workspaces
# 3. Tail logs for detailed progress
./shannon logs ID=audit_shannon-1234567890
Workspaces → Resume
Resume interrupted or failed workflows:
# 1. Check workspace status
./shannon workspaces
# Shows: audit-1 (Failed, 2/5 agents)
# 2. Fix issue (update .env, fix config, etc.)
# 3. Resume workflow
./shannon start URL=https://example.com REPO=my-repo WORKSPACE=audit-1
Output Location
Workspace data is stored in:
audit-logs/<workspace-id>/
├── session.json # Workspace metadata
├── workflow.log # Human-readable log
├── pre-recon/
│ ├── prompt.txt
│ ├── agent.log
│ └── metrics.json
└── ...
Customize output location with OUTPUT parameter:
./shannon start URL=https://example.com REPO=my-repo \
OUTPUT=./security-audits
# Workspaces stored in: ./security-audits/<workspace-id>/
Next Steps
Resume Workflows Learn advanced workspace resume strategies
View Logs Monitor workflow execution in real-time
Query Progress Query detailed workflow state
Start Command Options for starting workflows