Currently, security updates are provided for the latest release version only.
| Version | Supported |
|---|---|
| 0.19.x | ✅ |
| < 0.19 | ❌ |
Charted Roots handles highly sensitive personally identifiable information (PII) by design, including:
- Full names of individuals and family members
- Birth and death dates
- Family relationships (parents, children, spouses, custom relationships)
- Organization memberships (guilds, companies, political affiliations, etc.)
- Place associations (birthplaces, residences, historical locations)
- GEDCOM/Gramps XML files containing extensive genealogical data
- Custom notes about individuals
- Potential additional PII in linked Markdown files
Important: All data is stored locally in your Obsidian vault. The plugin does not:
- Transmit data over the network
- Connect to external services
- Upload information to cloud servers
- Share data with third parties
-
Person Notes (
.mdfiles)- Location: Anywhere in your vault (user-controlled)
- Format: Markdown with YAML frontmatter
- Contains: Names, dates, relationships, cr_id values
-
Place Notes (
.mdfiles)- Location: Anywhere in your vault (user-controlled)
- Format: Markdown with YAML frontmatter
- Contains: Location names, coordinates, historical associations
-
Organization Notes (
.mdfiles)- Location: Anywhere in your vault (user-controlled)
- Format: Markdown with YAML frontmatter
- Contains: Organization names, types, membership records
-
Canvas Files (
.canvasfiles)- Location: Anywhere in your vault (user-controlled)
- Format: JSON
- Contains: Visual layout data, references to person/place/organization notes
-
Plugin Settings (
data.json)- Location:
.obsidian/plugins/charted-roots/data.json - Format: Plain text JSON (unencrypted)
- Contains: Plugin configuration (node sizes, spacing, preferences)
- Does NOT contain: Personal genealogical data
- Location:
- Obsidian Standard: Follows Obsidian's markdown-first philosophy
- User Control: Users maintain full ownership and control of their data
- Transparency: No hidden or obfuscated data storage
- Portability: Data can be easily backed up, migrated, or processed by other tools
- Mobile Compatibility: Works across all Obsidian platforms
-
Vault Protection
- Use strong passwords/encryption for your vault
- Enable Obsidian's vault encryption if available
- Store your vault on encrypted storage devices
- Limit physical access to devices containing your vault
-
Sharing Considerations
- Never share your vault publicly without sanitizing PII first
- Be extremely cautious about who has access to your vault
- Consider using separate vaults for sensitive genealogical data vs. other notes
- Use privacy protection when exporting GEDCOM files for sharing
- Privacy protection replaces living persons' names with placeholders while preserving tree structure
-
Cloud Sync and Backup
- Understand that cloud sync services (Obsidian Sync, Dropbox, etc.) will sync all PII
- Ensure your cloud storage is properly secured with 2FA
- Consider local-only vaults for highly sensitive family data
- Encrypted cloud storage is strongly recommended
-
Version Control (Git)
- NEVER commit genealogical vaults to public repositories
- Use private repositories only if necessary
- Consider adding person notes directory to
.gitignore - Be aware that git history contains all previous versions of data
-
GEDCOM Files
- GEDCOM files contain extensive PII about living and deceased individuals
- Treat GEDCOM files with the same security as financial documents
- Be cautious when importing GEDCOM files from untrusted sources
- Enable privacy protection when exporting GEDCOM files for sharing
- Living persons can be anonymized or excluded entirely from exports
-
Client Data
- Maintain separate vaults for each client
- Never mix client data in shared vaults
- Follow applicable data protection regulations (GDPR, CCPA, etc.)
- Obtain explicit consent before storing client family data
-
Compliance
- This plugin does not provide GDPR/CCPA compliance features
- Users are responsible for compliance with applicable regulations
- Consider data retention policies for deceased individuals
- Document your data handling procedures
-
Data Anonymization
- Enable privacy protection for professional demonstrations and client presentations
- Configure the age threshold to determine who is considered living
- Choose display formats: "Living", "Private", initials, or exclude entirely
- Export privacy protection creates shareable files while preserving tree structure
- Use fictional data for public examples when privacy protection is insufficient
- Physical Security: Secure devices containing your vault
- Account Security: Use strong passwords for OS accounts
- Application Security: Keep Obsidian and plugins updated
- Network Security: Be cautious on public WiFi when accessing vaults
- Regular Backups: Maintain encrypted backups of your vault
- Backup Testing: Periodically verify backup integrity
- Offsite Storage: Consider encrypted offsite backup storage
- Backup Security: Protect backups with same security as primary vault
- Data Collection: Only include necessary PII
- Data Retention: Consider retention policies for old data
- Data Deletion: Securely delete data when no longer needed
- Data Migration: Securely transfer data when changing systems
- No Built-in Encryption: The plugin does not encrypt data (relies on Obsidian/OS)
- No Access Controls: Anyone with vault access can view all data
- No Audit Logging: The plugin does not log data access (but see Log Export Privacy below)
- Privacy Protection is Opt-in: Users must manually enable privacy protection in settings
- Canvas Privacy Limitations: See Canvas Privacy Protection for important limitations
If you discover a security vulnerability in Charted Roots, please report it by:
- DO NOT open a public GitHub issue for security vulnerabilities
- Email the maintainer directly at: [Check GitHub profile or package.json]
- Include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact (especially regarding PII exposure)
- Suggested fix (if available)
You can expect:
- Initial response within 48 hours
- Regular updates on the status of your report
- Credit in the security advisory (unless you prefer to remain anonymous)
- Coordination on disclosure timeline
Users should be aware of and comply with applicable privacy laws, including but not limited to:
- GDPR (EU): Right to be forgotten, data portability, consent requirements
- CCPA (California): Consumer privacy rights, data disclosure requirements
- Other Regional Laws: Consult local privacy regulations
- Living Individuals: Exercise caution when recording data about living persons
- Consent: Consider obtaining consent before recording others' information
- Sensitive Information: Handle adoptions, paternity, and medical data with care
- Cultural Sensitivity: Respect cultural norms around family information
- Historical Context: Be mindful of historical injustices in genealogical records
If you suspect your vault containing family data has been compromised:
-
Immediate Actions:
- Disconnect the device from network
- Change passwords for cloud sync services
- Review access logs if available
- Identify what data may have been exposed
-
Assessment:
- Determine scope of exposure
- Identify affected individuals
- Consider legal notification requirements
-
Mitigation:
- Create new vault with fresh data
- Review and update security practices
- Consider informing affected family members
- Document the incident
Charted Roots includes privacy protection capabilities designed to protect PII:
- Automatic detection: Persons without death dates born within a configurable threshold (default: 100 years) are considered living
- Display formats: Choose how protected persons appear: "Living", "Private", initials, or hidden
- Export protection: Living persons can be automatically protected in GEDCOM, GEDCOM X, Gramps XML, and CSV exports
- Manual override: Use the
cr_livingfrontmatter property to explicitly mark individuals as living (true) or deceased (false), overriding automatic detection
Certain fields containing highly sensitive personal information are always excluded from exports, regardless of privacy settings:
- SSN/Social Security Number:
ssn,socialSecurityNumber,social_security_number - National Identity Numbers:
identityNumber,identity_number
These fields are automatically redacted from all export formats (GEDCOM, GEDCOM X, Gramps XML, CSV) to prevent accidental disclosure.
- Privacy-aware exports: GEDCOM, GEDCOM X, Gramps XML, and CSV exports respect privacy settings
- Configurable threshold: Set the age threshold for automatic living person detection
- Structure preservation: Family relationships maintained even when names are protected
- Multiple formats: Privacy protection works across all export formats
- Sensitive field redaction: SSN and identity numbers are always excluded from exports
When sharing logs for debugging or support, PII is automatically protected:
- Obfuscation enabled by default: Log exports replace personal data with placeholders
- What gets obfuscated: Names →
[NAME-1], dates →[DATE], years →[YEAR], file paths →/[FILE].md, UUIDs →[ID] - Configurable: Can be disabled in Settings → Logging when debugging privately
- Non-destructive: Original log data remains intact; obfuscation applies only to exports
Canvas generation includes privacy protection options when enabled in the tree wizard:
- Text node obfuscation: Living persons shown as text nodes with obfuscated names (e.g., "Living", "Private", or initials)
- Hidden option: Exclude living persons entirely from generated canvas
- Wikilinks preserved: Text nodes include wikilinks for navigation back to original notes
- Preview integration: Wizard shows count of privacy-protected persons before generation
Important limitations:
| Limitation | Impact |
|---|---|
| File nodes reveal identity | When using 'file' format, filename in canvas JSON is visible to anyone viewing the .canvas file |
| Wikilinks in text nodes | Text nodes include [[filename]] wikilinks which contain the original person's filename |
| Canvas JSON not encrypted | Canvas files store all node data in plain JSON format |
| Generation-time only | Privacy applied when canvas is created; no runtime hooks available |
| Shared canvases | If you share a canvas file, recipients can see the underlying data |
| Edges preserved | Relationship edges remain, showing family structure |
What this means: Canvas privacy protection is designed for reducing casual visibility when viewing canvases, not for secure data protection. For maximum privacy:
- Use the "hidden" display format to exclude living persons entirely
- Do not share generated canvas files containing living persons
- Consider the underlying canvas JSON visible to anyone with file access
- GDPR Compliance: Share historical research while protecting living EU residents' data
- Public Genealogy: Share complete historical trees while protecting recent generations
- Professional Demonstrations: Show family tree structures without exposing client PII
- Educational Materials: Create teaching examples protecting all living individuals
- Collaborative Research: Share tree structure with researchers who need patterns, not names
- Bug Reports: Share logs publicly without exposing family data
Mark specific fields as private using the private_fields frontmatter property:
- User-defined list: Specify which fields contain sensitive information
- Export warnings: Confirmation dialog shown before exporting private fields
- Deadname protection: Use
private_fields: [previous_names]to protect previous names - Common use cases: Medical notes, legal information, personal notes
Example:
name: Alex Johnson
previous_names:
- Alexandra Johnson
private_fields:
- previous_namesCharted Roots helps users discover privacy features:
- Import notification: After importing data with potential living persons, a notice offers to configure privacy settings
- Export warning: When privacy protection is disabled, the export preview shows how many living persons will be exported with full details
- One-click settings access: Both notices link directly to privacy configuration
Additional planned improvements:
- Interactive family chart privacy: Apply privacy protection to the family chart view
- Report privacy: Apply privacy protection to markdown/ODT/PDF reports
- Runtime canvas obfuscation: Temporary display mode toggle for screenshots/presentations
- Optional encryption for cr_id values
- Audit logging capabilities
- Access control recommendations
We take the security and privacy of genealogical data seriously and appreciate security researchers and privacy advocates who help keep Charted Roots secure.
Remember: Your family's privacy is in your hands. This plugin provides tools for organizing genealogical data, but you are responsible for securing that data appropriately.