agentdiscover 2.9.2__tar.gz → 2.9.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/PKG-INFO +1 -1
  2. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/pyproject.toml +1 -1
  3. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/correlator.py +14 -2
  4. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/platform.py +23 -1
  5. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/.claude/commands/grow-scanner.md +0 -0
  6. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/.github/workflows/aibom.yml +0 -0
  7. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/.github/workflows/ci.yml +0 -0
  8. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/.github/workflows/scan.yml +0 -0
  9. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/.gitignore +0 -0
  10. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/.python-version +0 -0
  11. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/CHANGELOG.md +0 -0
  12. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/CLAUDE.md +0 -0
  13. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/COMMIT_NOTES.md +0 -0
  14. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/CONTRIBUTING.md +0 -0
  15. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/Dockerfile +0 -0
  16. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/LICENSE +0 -0
  17. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/README.md +0 -0
  18. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/README_BADGES.txt +0 -0
  19. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/RELEASE_NOTES.md +0 -0
  20. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/ROADMAP.md +0 -0
  21. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/SECURITY.md +0 -0
  22. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/action.yml +0 -0
  23. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/k8s/agents-configmap.yaml +0 -0
  24. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/k8s/crewai-agent.yaml +0 -0
  25. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/k8s/langchain-agent.yaml +0 -0
  26. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/k8s/shadow-agent.yaml +0 -0
  27. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/mcp-governance/DESIGN.md +0 -0
  28. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/mcp-governance/README.md +0 -0
  29. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/mcp-governance/sample-policy.yaml +0 -0
  30. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/run-demo.sh +0 -0
  31. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/sample-repo/agents/autogen_agent.py +0 -0
  32. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/sample-repo/agents/crewai_agent.py +0 -0
  33. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/sample-repo/agents/direct_client.py +0 -0
  34. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/sample-repo/agents/langchain_agent.py +0 -0
  35. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/sample-repo/requirements.txt +0 -0
  36. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/demo/setup.sh +0 -0
  37. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/deployment/kubernetes/tracing-policy.yaml +0 -0
  38. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/deployment/systemd/README.md +0 -0
  39. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/deployment/systemd/agent-discover-scanner.service +0 -0
  40. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docker-compose.yml +0 -0
  41. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docs/EXAMPLES.md +0 -0
  42. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docs/TETRAGON_SETUP.md +0 -0
  43. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docs/architecture.svg +0 -0
  44. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docs/comparisons/vs-grep.md +0 -0
  45. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docs/comparisons/vs-nudge-security.md +0 -0
  46. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docs/ghost-detection.svg +0 -0
  47. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docs/integrations/elastic.md +0 -0
  48. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docs/integrations/github-actions.md +0 -0
  49. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docs/integrations/kubernetes-daemonset.md +0 -0
  50. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docs/integrations/splunk.md +0 -0
  51. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docs/known-apps-example.txt +0 -0
  52. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docs/layer4-setup.md +0 -0
  53. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/docs/nist-mapping.md +0 -0
  54. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/examples/k8s/test-workload.yaml +0 -0
  55. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/examples/tetragon-sample-events.json +0 -0
  56. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/install.sh +0 -0
  57. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/__init__.py +0 -0
  58. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/aibom.py +0 -0
  59. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/audit_reports.py +0 -0
  60. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/behavioral_patterns.py +0 -0
  61. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/cli.py +0 -0
  62. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/detectors/__init__.py +0 -0
  63. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/detectors/cloud_audit/__init__.py +0 -0
  64. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/detectors/cloud_audit/aws_cloudtrail.py +0 -0
  65. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/detectors/cloud_audit/azure_monitor.py +0 -0
  66. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/detectors/cloud_audit/base.py +0 -0
  67. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/detectors/cloud_audit/gcp_audit.py +0 -0
  68. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/detectors/cloudtrail.py +0 -0
  69. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/detectors/sse_proxy/__init__.py +0 -0
  70. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/detectors/sse_proxy/base.py +0 -0
  71. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/detectors/sse_proxy/netskope.py +0 -0
  72. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/detectors/sse_proxy/prisma_access.py +0 -0
  73. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/detectors/sse_proxy/zscaler_zia.py +0 -0
  74. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/errors.py +0 -0
  75. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/exporters/__init__.py +0 -0
  76. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/exporters/mcpfw_policy.py +0 -0
  77. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/git_scanner.py +0 -0
  78. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/high_risk_agents.py +0 -0
  79. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/interceptors/__init__.py +0 -0
  80. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/interceptors/base.py +0 -0
  81. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/interceptors/sse/__init__.py +0 -0
  82. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/interceptors/sse/netskope.py +0 -0
  83. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/interceptors/sse/prisma_access.py +0 -0
  84. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/interceptors/sse/umbrella.py +0 -0
  85. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/interceptors/sse/zscaler.py +0 -0
  86. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/js_signatures.py +0 -0
  87. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/known_apps.py +0 -0
  88. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/layer4/__init__.py +0 -0
  89. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/layer4/osquery_executor.py +0 -0
  90. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/layer4/osquery_queries.py +0 -0
  91. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/layer4/result_parser.py +0 -0
  92. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/macos_detector.py +0 -0
  93. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/mcp_detector.py +0 -0
  94. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/models/endpoint_discovery.py +0 -0
  95. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/monitors/__init__.py +0 -0
  96. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/monitors/json_output.py +0 -0
  97. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/monitors/k8s_monitor.py +0 -0
  98. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/monitors/tetragon_events.py +0 -0
  99. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/monitors/tetragon_monitor.py +0 -0
  100. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/monitors/vendor_mapping.py +0 -0
  101. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/network_monitor.py +0 -0
  102. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/process_introspection.py +0 -0
  103. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/reports/layer4_report.py +0 -0
  104. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/saas_detector.py +0 -0
  105. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/sarif_output.py +0 -0
  106. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/sbom_analyzer.py +0 -0
  107. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/scan_runner.py +0 -0
  108. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/scanner.py +0 -0
  109. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/signatures.py +0 -0
  110. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/visitor.py +0 -0
  111. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/src/agent_discover_scanner/windows_detector.py +0 -0
  112. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/__init__.py +0 -0
  113. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/autogen_safe.py +0 -0
  114. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/autogen_unsafe.py +0 -0
  115. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/bedrock_safe.py +0 -0
  116. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/bedrock_unsafe.py +0 -0
  117. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/clean_code.py +0 -0
  118. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/crewai_safe.py +0 -0
  119. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/crewai_unsafe.py +0 -0
  120. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/langchain_agents.py +0 -0
  121. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/langchain_js_agent.js +0 -0
  122. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/langgraph_workflow.py +0 -0
  123. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/safe_with_gateway.py +0 -0
  124. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/shadow_anthropic.py +0 -0
  125. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/shadow_openai.py +0 -0
  126. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/fixtures/shadow_openai_js.js +0 -0
  127. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_aibom.py +0 -0
  128. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_audit_bundle.py +0 -0
  129. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_bedrock_signatures.py +0 -0
  130. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_behavioral_patterns.py +0 -0
  131. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_cloud_audit_layer5.py +0 -0
  132. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_cloudtrail.py +0 -0
  133. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_cloudtrail_wiring.py +0 -0
  134. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_correlator.py +0 -0
  135. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_correlator_layer5.py +0 -0
  136. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_forward_dns.py +0 -0
  137. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_git_scanner.py +0 -0
  138. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_install.sh +0 -0
  139. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_interceptors.py +0 -0
  140. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_l2_process_introspection.py +0 -0
  141. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_mcpfw_export.py +0 -0
  142. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_network_monitor.py +0 -0
  143. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_platform_enrichment.py +0 -0
  144. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_scanner.py +0 -0
  145. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/tests/test_sse_proxy.py +0 -0
  146. {agentdiscover-2.9.2 → agentdiscover-2.9.3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentdiscover
3
- Version: 2.9.2
3
+ Version: 2.9.3
4
4
  Summary: Discover every AI agent in your infrastructure. 5-layer detection: static analysis, network monitoring, eBPF/Kubernetes runtime, endpoint, and cloud audit (CloudTrail). Company-level correlation. AIBOM export. MCP server detection.
5
5
  Project-URL: Homepage, https://defendai.ai
6
6
  Project-URL: Documentation, https://github.com/Defend-AI-Tech-Inc/agent-discover-scanner/blob/main/README.md
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "agentdiscover"
7
- version = "2.9.2"
7
+ version = "2.9.3"
8
8
  description = "Discover every AI agent in your infrastructure. 5-layer detection: static analysis, network monitoring, eBPF/Kubernetes runtime, endpoint, and cloud audit (CloudTrail). Company-level correlation. AIBOM export. MCP server detection."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -211,12 +211,24 @@ def _populate_saas_and_risk_flags(
211
211
 
212
212
  risk_flags = []
213
213
  detected = saas.get("detected", [])
214
+ is_shadow = item.classification == "shadow_ai_usage"
215
+
214
216
  if item.classification == "ghost" and detected:
215
217
  risk_flags.append("critical_ghost")
216
- if saas.get("has_cloud_provider"):
218
+
219
+ # cloud_credentials_present and database_credentials_present require evidence of
220
+ # actual credentials (API keys, env vars, .env files) — not just network connections
221
+ # to cloud services. Shadow AI agents are browsers / desktop apps: their network
222
+ # traffic to Azure/GCP/AWS is normal browsing, not credential usage. Only flag
223
+ # when credential_files_found exist, or when the agent is code-backed (non-shadow).
224
+ has_actual_cred_evidence = bool(
225
+ saas.get("credential_files_found") or (not is_shadow)
226
+ )
227
+ if saas.get("has_cloud_provider") and has_actual_cred_evidence:
217
228
  risk_flags.append("cloud_credentials_present")
218
- if saas.get("has_database_access"):
229
+ if saas.get("has_database_access") and has_actual_cred_evidence:
219
230
  risk_flags.append("database_credentials_present")
231
+
220
232
  if saas.get("has_external_api_calls") and item.classification == "unknown":
221
233
  risk_flags.append("unverified_saas_access")
222
234
  item.risk_flags = risk_flags
@@ -427,13 +427,22 @@ def format_agents_for_upload(
427
427
 
428
428
  agents.append(
429
429
  {
430
+ # Identity / display
431
+ "agent_id": item.get("agent_id"),
430
432
  "name": name,
431
433
  "framework": framework,
432
434
  "agent_type": agent_type,
433
435
  "confidence_score": confidence_score,
436
+ "risk_level": item.get("risk_level"),
437
+ # Machine context
434
438
  "hostname": _hostname,
435
439
  "username": _username,
436
440
  "os": _os,
441
+ # Runtime context
442
+ "process_name": item.get("process_name"),
443
+ "code_file": item.get("code_file"),
444
+ "last_seen": item.get("last_seen"),
445
+ # SaaS / MCP blast radius
437
446
  "saas_connections": metadata.get("saas_connections") or {},
438
447
  "mcp_connections": metadata.get("mcp_connections") or {},
439
448
  # L5 enrichment promoted to top-level (server schema v2.8.0)
@@ -660,7 +669,20 @@ def upload_scan_results(
660
669
  print(f" Models identified: {len(_ca_summary['models_used'])}")
661
670
  if _net_summary.get("total_connections"):
662
671
  print(f" Network connections: {_net_summary['total_connections']}")
663
- print(" Dashboard: https://discover.defendai.ai/dashboard/agent_inventory")
672
+ # Prefer tenant-specific dashboard URL from server response; fall back
673
+ # to a generic discover URL if the server doesn't return one.
674
+ _dashboard_url = "https://discover.defendai.ai/dashboard/agent_inventory"
675
+ try:
676
+ _resp_json = response.json()
677
+ if isinstance(_resp_json, dict):
678
+ _dashboard_url = (
679
+ _resp_json.get("dashboard_url")
680
+ or _resp_json.get("tenant_dashboard_url")
681
+ or _dashboard_url
682
+ )
683
+ except Exception:
684
+ pass
685
+ print(f" Dashboard: {_dashboard_url}")
664
686
  return True
665
687
 
666
688
  reason = f"HTTP {response.status_code}"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes