K9 Ownership Byod Setup
DatadogOfficialPublished by Datadog
- Skill
- Tool integration
- Cloud and DevOps
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured workflow for configuring custom ownership preferences for the Datadog Ownership Agent. By defining tag mappings, exclusions, and custom prompt text in a specific CSV format, users can refine how the agent identifies resource owners. The skill covers the entire lifecycle: determining business needs, generating the required 12-column CSV, and implementing the table via UI, cloud storage, Terraform, or API.
What it does
- Walks through the identification of tag mappings, exclusions, and custom context.
- Provides a template and schema requirements for the k9_ownership_preferences CSV.
- Explains how to upload the reference table using the Datadog UI.
- Details methods for automated updates via cloud storage sync.
- Outlines infrastructure-as-code implementation using Terraform.
- Offers troubleshooting steps for common validation and matching issues.
When to use it
- When you need to customize how the Ownership Agent identifies resource owners.
- When you have specific tags that indicate ownership but are not automatically detected.
- When you need to exclude specific service or bot accounts from ownership reports.
- When you want to provide organization-specific context to the ownership engine.
- When you need to automate ownership preference updates via CI/CD or cloud storage.
Advantages
- Enables precise, organization-specific ownership mapping.
- Supports multiple implementation methods including automation-friendly options.
- Reduces noise by allowing the exclusion of non-human service accounts.
- Provides clear validation rules to ensure successful table ingestion.
Usage examples
- “How do I set up custom ownership preferences for my cloud resources?”
- The agent will guide you through identifying your tag mappings and exclusions, generate the required CSV structure, and provide instructions for uploading it to Datadog.
- “I need to exclude my CI runner from being identified as a resource owner.”
- The agent will explain how to add an exclusion row to your k9_ownership_preferences table to filter out the CI runner handle.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/datadog-labs/k9-ownership-byod-setup/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip k9-ownership-byod-setup.zip -d .agents/skills
Documentation by Datadog
BYOD Preferences Reference Table Setup
Help customers create and upload a k9_ownership_preferences reference table to customize how the Ownership Agent determines resource owners.
Read first
references/schema.md— full schema, column details, validation rules, and per-type examplesassets/example.csv— complete working CSV with all three preference types
Overview
The Ownership Agent infers owners for cloud resources with security findings. Ownership preferences let customers customize this by providing rules in a Datadog reference table. The agent reads them automatically.
With preferences you can:
Map tags to owners: Resources with specific tag values belong to a particular team or person
Exclude accounts: Prevent bot accounts or shared infrastructure from appearing as owners
Provide custom guidance: Give the AI engine organization-specific context
Reference Table Details
Table name:
k9_ownership_preferences(exact name, must match)Effect delay: Changes take effect within 24 hours of upload
Schema: 12 columns, all STRING — see
references/schema.mdfor details
Workflow
Step 1: Determine Needs
Ask the customer:
Tag mappings: "Do you have tags on your cloud resources that indicate ownership? (e.g.,
cost-center,team,project)"Exclusions: "Are there bot accounts, service accounts, or shared accounts that should never appear as owners?"
Prompt text: "Any organization-specific context that would help determine ownership? (e.g., naming conventions, team structure)"
Step 2: Generate CSV
Read references/schema.md for the full column spec and assets/example.csv for a working template. Build a CSV with all 12 column headers. Each row gets a unique sequential id and fills columns relevant to its preference_type, leaving the rest empty.
Step 3: Upload Instructions
Option A — CSV Upload (UI):
Go to Integrations > Reference Tables in Datadog
Click New Reference Table
Upload the CSV
Set table name to
k9_ownership_preferencesChoose primary key:
preference_type, tag_key, tag_value, handleSave
Manual uploads support files up to 4 MB.
Option B — Cloud Storage Sync (S3, Azure Blob, GCS): Best for automated, recurring updates. Store your CSV in a cloud storage bucket and Datadog periodically imports it.
Upload CSV to S3 / Azure Blob / GCS
In Datadog, go to Integrations > Reference Tables
Click New Reference Table, select Cloud Storage as source
Provide storage path and credentials
Set table name to
k9_ownership_preferencesDatadog re-imports the file periodically
Cloud storage uploads support files up to 200 MB.
Option C — Terraform:
Use the datadog_reference_table resource in the Datadog Terraform provider to manage the table as infrastructure-as-code.
Option D — API: You can manage reference tables programmatically through the Reference Tables API. See the API documentation for available endpoints. Replace the API domain with your Datadog site URL if applicable.
Step 4: Verify
Changes take effect within 24 hours. To verify:
Identify a resource that matches one of your tag mappings
After 24 hours, check the ownership suggestion for that resource in the Datadog UI
The suggested owner should reflect your configured mapping
Key Behaviors
Case-insensitive matching: Tag keys, tag values, handles, exclusion types, and resource types are all matched case-insensitively
AND-logic exclusions: All non-empty exclusion fields must match. Empty fields act as wildcards
Tag mappings complement, not override: Direct ownership indicators (like
team:orservice:tags) take precedence. Tag mappings augment, not replaceGraceful degradation: If the table doesn't exist or is empty, ownership detection works normally without preferences
Empty table clears preferences: Deleting all rows or deleting the table causes cached preferences to expire and be left empty
All-or-nothing validation: Any validation failure rejects the entire preference set for that cycle
Troubleshooting
| Problem | Likely cause | Fix |
|---|---|---|
| Preferences not taking effect after 24h | Table name is wrong | Must be exactly k9_ownership_preferences |
| Preferences not taking effect after 24h | Missing column headers | All 12 columns must exist as CSV headers |
| Preferences not taking effect after 24h | Feature not enabled for org | Contact support to enable ownership preferences |
| All preferences rejected | Invalid characters | See references/schema.md Allowed Characters. No angle brackets, curly braces, or pipes |
| All preferences rejected | Missing required field | Check required fields for each preference type in references/schema.md |
| All preferences rejected | Duplicate or conflicting rows | See Duplicate Detection in references/schema.md |
| All preferences rejected | Size limit exceeded | 50 tag mappings, 20 exclusions, 3 prompt texts. 1024 bytes/field, 4096/prompt |
| Tag mapping not matching | Spelling mismatch | Matching is case-insensitive but verify exact tag key/value on resource |
| Exclusion not applying | Scoping too narrow | All non-empty fields must match (AND). Leave filters empty for broad exclusions |
| Preferences cleared unexpectedly | Table emptied or deleted | Both cause cached preferences to expire. Upload a valid CSV to restore |
Files
- ATTRIBUTION.mdAdded by AutoGineer890 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md5.9 KiB
- assets/example.csv1.3 KiB
- references/schema.md6.2 KiB
SKILL.md
BYOD Preferences Reference Table Setup
Help customers create and upload a k9_ownership_preferences reference table to customize how the Ownership Agent determines resource owners.
Read first
references/schema.md— full schema, column details, validation rules, and per-type examplesassets/example.csv— complete working CSV with all three preference types
Overview
The Ownership Agent infers owners for cloud resources with security findings. Ownership preferences let customers customize this by providing rules in a Datadog reference table. The agent reads them automatically.
With preferences you can:
Map tags to owners: Resources with specific tag values belong to a particular team or person
Exclude accounts: Prevent bot accounts or shared infrastructure from appearing as owners
Provide custom guidance: Give the AI engine organization-specific context
Reference Table Details
Table name:
k9_ownership_preferences(exact name, must match)Effect delay: Changes take effect within 24 hours of upload
Schema: 12 columns, all STRING — see
references/schema.mdfor details
Workflow
Step 1: Determine Needs
Ask the customer:
Tag mappings: "Do you have tags on your cloud resources that indicate ownership? (e.g.,
cost-center,team,project)"Exclusions: "Are there bot accounts, service accounts, or shared accounts that should never appear as owners?"
Prompt text: "Any organization-specific context that would help determine ownership? (e.g., naming conventions, team structure)"
Step 2: Generate CSV
Read references/schema.md for the full column spec and assets/example.csv for a working template. Build a CSV with all 12 column headers. Each row gets a unique sequential id and fills columns relevant to its preference_type, leaving the rest empty.
Step 3: Upload Instructions
Option A — CSV Upload (UI):
Go to Integrations > Reference Tables in Datadog
Click New Reference Table
Upload the CSV
Set table name to
k9_ownership_preferencesChoose primary key:
preference_type, tag_key, tag_value, handleSave
Manual uploads support files up to 4 MB.
Option B — Cloud Storage Sync (S3, Azure Blob, GCS): Best for automated, recurring updates. Store your CSV in a cloud storage bucket and Datadog periodically imports it.
Upload CSV to S3 / Azure Blob / GCS
In Datadog, go to Integrations > Reference Tables
Click New Reference Table, select Cloud Storage as source
Provide storage path and credentials
Set table name to
k9_ownership_preferencesDatadog re-imports the file periodically
Cloud storage uploads support files up to 200 MB.
Option C — Terraform:
Use the datadog_reference_table resource in the Datadog Terraform provider to manage the table as infrastructure-as-code.
Option D — API: You can manage reference tables programmatically through the Reference Tables API. See the API documentation for available endpoints. Replace the API domain with your Datadog site URL if applicable.
Step 4: Verify
Changes take effect within 24 hours. To verify:
Identify a resource that matches one of your tag mappings
After 24 hours, check the ownership suggestion for that resource in the Datadog UI
The suggested owner should reflect your configured mapping
Key Behaviors
Case-insensitive matching: Tag keys, tag values, handles, exclusion types, and resource types are all matched case-insensitively
AND-logic exclusions: All non-empty exclusion fields must match. Empty fields act as wildcards
Tag mappings complement, not override: Direct ownership indicators (like
team:orservice:tags) take precedence. Tag mappings augment, not replaceGraceful degradation: If the table doesn't exist or is empty, ownership detection works normally without preferences
Empty table clears preferences: Deleting all rows or deleting the table causes cached preferences to expire and be left empty
All-or-nothing validation: Any validation failure rejects the entire preference set for that cycle
Troubleshooting
| Problem | Likely cause | Fix |
|---|---|---|
| Preferences not taking effect after 24h | Table name is wrong | Must be exactly k9_ownership_preferences |
| Preferences not taking effect after 24h | Missing column headers | All 12 columns must exist as CSV headers |
| Preferences not taking effect after 24h | Feature not enabled for org | Contact support to enable ownership preferences |
| All preferences rejected | Invalid characters | See references/schema.md Allowed Characters. No angle brackets, curly braces, or pipes |
| All preferences rejected | Missing required field | Check required fields for each preference type in references/schema.md |
| All preferences rejected | Duplicate or conflicting rows | See Duplicate Detection in references/schema.md |
| All preferences rejected | Size limit exceeded | 50 tag mappings, 20 exclusions, 3 prompt texts. 1024 bytes/field, 4096/prompt |
| Tag mapping not matching | Spelling mismatch | Matching is case-insensitive but verify exact tag key/value on resource |
| Exclusion not applying | Scoping too narrow | All non-empty fields must match (AND). Leave filters empty for broad exclusions |
| Preferences cleared unexpectedly | Table emptied or deleted | Both cause cached preferences to expire. Upload a valid CSV to restore |
Requirements and compatibility
Written for: Claude Code
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Declares allowed tools, Claude Code frontmatter
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Datadog
- Publisher
- Datadog (Official)
- Source
- datadog-labs/agent-skills · dd-security/csm/ownership-agent · commit 8e1306a
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Datadog.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download k9-ownership-byod-setup.zip