# How to Configure Excluded Tags to Prevent Note Auto-Loading in Claudian

> Learn how to configure Claudian's excluded tags to stop notes from auto-loading in chat sessions. Easily manage your settings via the UI or JSON.

- Repository: [YishenTu/claudian](https://github.com/YishenTu/claudian)
- Tags: how-to-guide
- Published: 2026-03-17

---

**Claudian automatically excludes notes from chat sessions when they contain tags listed in the Excluded Tags setting, which you can configure via the Settings UI or by editing the plugin's JSON configuration directly.**

The Claudian plugin for Obsidian automatically attaches your currently active note to new chat sessions unless specifically configured otherwise. To prevent sensitive or draft notes from being auto-loaded, you can configure excluded tags that block automatic attachment. This guide explains how to set up these exclusions using the plugin's settings interface and underlying source code.

## How Excluded Tags Work in Claudian

The exclusion system operates through four distinct stages defined in the source code:

1. **Settings Storage** – The excluded tags array lives in `plugin.settings.excludedTags` as defined in [`src/features/settings/ClaudianSettings.ts`](https://github.com/YishenTu/claudian/blob/main/src/features/settings/ClaudianSettings.ts) (lines 136-148) and persists in the plugin's JSON settings file.

2. **UI Configuration** – The Settings tab renders a textarea where each line represents one excluded tag.

3. **Tag Detection** – When a file opens or a session starts, `FileContextManager.autoAttachActiveFile()` invokes `FileContextManager.hasExcludedTag()` (located in [`src/features/chat/ui/FileContext.ts`](https://github.com/YishenTu/claudian/blob/main/src/features/chat/ui/FileContext.ts), lines 60-84). This method queries the Obsidian `metadataCache` to read `cache.frontmatter?.tags` and `cache.tags`, strips leading `#` characters, and returns **true** if any file tag matches the excluded list.

4. **Attachment Prevention** – If `hasExcludedTag()` returns true, the note is skipped during auto-attachment, though manual attachment remains available through the chip UI.

## Configuring Excluded Tags in Settings

### Using the Settings UI

In [`src/features/settings/ClaudianSettings.ts`](https://github.com/YishenTu/claudian/blob/main/src/features/settings/ClaudianSettings.ts) (lines 136-148), the plugin exposes a textarea interface for tag management:

```ts
// Settings UI implementation in ClaudianSettings.ts
new Setting(containerEl)
  .setName(t('settings.excludedTags.name'))
  .setDesc(t('settings.excludedTags.desc'))
  .addTextArea((text) => {
    // One tag per line (e.g., "private", "draft", "system")
    text.setPlaceholder('system\nprivate\ndraft')
      .setValue(this.plugin.settings.excludedTags.join('\n'))
      .onChange(async (value) => {
        this.plugin.settings.excludedTags = value
          .split(/\r?\n/)
          .map(s => s.trim().replace(/^#/, ''))   // strip whitespace & leading #
          .filter(s => s.length > 0);
        await this.plugin.saveSettings();
      });
  });

```

Enter one tag per line. The handler automatically strips whitespace and leading `#` characters before saving to `plugin.settings.excludedTags`.

### Editing the JSON Configuration Directly

You can also modify the plugin's [`data.json`](https://github.com/YishenTu/claudian/blob/main/data.json) directly in your Obsidian vault:

```json
{
  "excludedTags": ["system", "private", "draft"]
}

```

This array corresponds to the `excludedTags: string[]` type defined in [`src/core/types/settings.ts`](https://github.com/YishenTu/claudian/blob/main/src/core/types/settings.ts) and is persisted via `saveSettings()` in [`src/main.ts`](https://github.com/YishenTu/claudian/blob/main/src/main.ts).

## Tag Detection Logic in the Source Code

The automatic attachment prevention relies on two key methods in [`src/features/chat/ui/FileContext.ts`](https://github.com/YishenTu/claudian/blob/main/src/features/chat/ui/FileContext.ts):

**`hasExcludedTag()` (lines 60-84)** performs the validation by:
- Retrieving cached metadata via `app.metadataCache.getFileCache(file)`
- Checking both `frontmatter.tags` and inline `tags` arrays
- Normalizing tags by removing leading `#` characters
- Comparing against `plugin.settings.excludedTags`

**`autoAttachActiveFile()`** calls this validation before attaching any file. If the active note carries an excluded tag, the method returns early, leaving the chat context empty until you manually select a file.

## Applying Excluded Tags to Your Notes

Once configured, apply excluded tags to specific notes using standard Obsidian syntax.

### Front Matter Tags

Add tags to the YAML front matter:

```markdown
---
tags: [private, research]
---

```

### Inline Tags

Use inline tags anywhere in the note body:

```markdown

# My Note

#private   <!-- inline tag -->

```

When `FileContextManager.hasExcludedTag()` processes this file, it detects the **private** tag and prevents `autoAttachActiveFile()` from attaching it to new chat sessions.

## Summary

- **Excluded tags** prevent automatic note attachment in Claudian when configured in `plugin.settings.excludedTags`
- Configure tags via the Settings UI textarea ([`ClaudianSettings.ts`](https://github.com/YishenTu/claudian/blob/main/ClaudianSettings.ts) lines 136-148) or by editing the JSON settings file directly
- The `hasExcludedTag()` method in [`FileContext.ts`](https://github.com/YishenTu/claudian/blob/main/FileContext.ts) (lines 60-84) checks both front matter and inline tags against your exclusion list
- Tag matching occurs during `autoAttachActiveFile()` execution, which skips attachment if excluded tags are found
- Manual attachment remains available through the chip UI even for excluded notes

## Frequently Asked Questions

### Where are excluded tags stored in Claudian?

Excluded tags persist in the plugin's JSON settings file as the `excludedTags` string array, defined in [`src/core/types/settings.ts`](https://github.com/YishenTu/claudian/blob/main/src/core/types/settings.ts) and managed through [`ClaudianSettings.ts`](https://github.com/YishenTu/claudian/blob/main/ClaudianSettings.ts) (lines 136-148). The array is accessed at runtime via `plugin.settings.excludedTags` and saved via the `saveSettings()` method.

### Can I use nested tags like #work/confidential?

Yes. The `hasExcludedTag()` method in [`FileContext.ts`](https://github.com/YishenTu/claudian/blob/main/FileContext.ts) strips the leading `#` character but preserves the full tag path. Include the complete nested tag (e.g., `work/confidential`) in your Excluded Tags settings, one per line, and the detection logic will match it against the cached metadata.

### Does configuring excluded tags prevent manual attachment?

No. The exclusion logic only affects `autoAttachActiveFile()` in [`FileContext.ts`](https://github.com/YishenTu/claudian/blob/main/FileContext.ts). If a note carries an excluded tag, it will not auto-load into new chat sessions, but you can still manually attach it using the chip UI in the chat interface.

### What happens if I add an excluded tag to a note that's already attached?

The exclusion check runs during the auto-attachment phase when files become active or sessions start. If a note is already attached to a chat and you later add an excluded tag, the current attachment remains until you switch files or start a new session, at which point the new tag will prevent re-attachment.