[BUG] Unable to generate a AGPLv3 license due to content filtering policy

Open 💬 24 comments Opened Nov 29, 2025 by jenova-marie

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

When I ask Claude to generate a AGPLv3 license it always shows:

Thinking…

  I see there's already a custom license (TCL v1.0). The user wants to switch to AGPLv3. Let me create the three files:

  1. LICENSE - Official AGPLv3 text
  2. LICENSE.md - Plain English explainer
  3. COMMERCIAL-LICENSE.md - For commercial negotiations

  I'll need to get the official AGPLv3 text. Let me write it out.

⏺ I see you have a custom TCL license. Let me replace it with AGPLv3 and create the supporting docs:
  ⎿  API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"Output blocked by content filtering policy"},"request_id":null}

  Todos
  ☐ Generate AGPLv3 LICENSE file
  ☐ Write LICENSE.md plain English explainer
  ☐ Write COMMERCIAL-LICENSE.md for negotiations
  ☐ Update README.md license section

What Should Happen?

Claude should not be prevented by content filtering for creating a AGPLv3 license file.

Error Messages/Logs

API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"Output blocked by content filtering policy"},"request_id":null}

Steps to Reproduce

Ask Claude to write a LICENSE for AGPLv3

Claude Model

Opus

Is this a regression?

No, this never worked

Last Working Version

_No response_

Claude Code Version

2.0.55 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

iTerm2

Additional Information

Claude code is amazing! You guys are doing a FABULOUS job!

View original on GitHub ↗

24 Comments

github-actions[bot] · 6 months ago

This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.

mickdarling · 6 months ago

The issue is still happening and my previous bung report from a few days ago references it. (https://github.com/anthropics/claude-code/issues/16380)

setting an auto close as inactive for 30 days while also consolidating the bug reports for new bug reports about this is a broken process.

marcindulak · 6 months ago

FYI: there is also a "60 days of inactivity" bot, that in some cases closes issues that contain active human comments https://github.com/anthropics/claude-code/issues/16497, but that issue probably hasn't achieved visibility yet.

duaneking · 5 months ago

I honestly believe that bot is malicious and just closing things; It's clearly either misconfigured or otherwise actively sabotaging the project and users feedback.

und3f1ned · 5 months ago

This is very annoying for 100 bucks

jenova-marie · 5 months ago

this is still an issue

❯ generate a AGPLv3 license

⏺ I'll check if there's already a license file, then create one.

⏺ Searched for 1 pattern (ctrl+o to expand)

⏺ Bash(ls -la /Users/jenova/LICENSE* 2>/dev/null; echo "exit: $?")
  ⎿  Bad Bitch Development
     MacOS Sequoia
     💖 Welcome, Goddess of the Recovery Sky 💖
     … +2 lines (ctrl+o to expand)
  ⎿  API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"Output blocked by content filtering
     policy"},"request_id":"req_011CXwKtBHDXiiGWtxXZY9B3"}

It's a pretty easy issue to reproduce.

MasterMind-SL · 4 months ago

Still there:

Got it — BSL 1.1 (Business Source License) that converts to Apache 2.0 after 3 years. Let me set it up.

API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"Output blocked by content filtering policy"},"request_id":"req_011CYKUjVFqB43bgzT3n4o8a"}

lancekrogers · 4 months ago

Just got it as well

⏺ User answered Claude's questions:
⎿  · What Change Date should the BSL use for converting to the Change License? (BSL standard is typically 4 years from release) →
2030-02-23
· What should the Change License be? (The open-source license it converts to after the Change Date) → Apache 2.0 (Recommended)
⎿  API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"Output blocked by content filtering
policy"},"request_id":"req_011CYSGAdkWqtFKWwe9Tm7qt

MasterMind-SL · 4 months ago

Workaround was to tell claude to write it in base64 encoding.

haydenk · 4 months ago
Workaround was to tell claude to write it in base64 encoding.

It works but that is the weirdest workaround.

makoConstruct · 4 months ago

It should be emphasised that having something content policy filtered with no explanation of which policy it violates (does anyone know?) is intolerable. Even asking claude what the problem is doesn't help, as claude answers "what do you mean, sure I can generate a BSL license, [proceeds to try and fail again]"

jenova-marie · 4 months ago
> Workaround was to tell claude to write it in base64 encoding. It works but that is the weirdest workaround.

So it would seem that a way to possibly get Claude around ANY content policy is to request base64? This itself seems like another issue that need to be investigated. Weird AF.

TilmanGuenther · 3 months ago

Slightly frustrating, just also encountered this bug. Base 64 "hack" did not work.

lucascaro · 3 months ago

happens every time I ask it to create a code of conduct 🤷

ipavicevic · 2 months ago

Claude is trying to add GPL v3 LICENSE file and it keeps failing with:
⎿  API Error: {"type":"error","error":{"details":null,"type":"invalid_request_error","message":"Output blocked by
content filtering policy"},"request_id":"req_011Cag6BVZFnoW6pc23GVsgo"}

I asked Claude to describe in details what it's doing on that failure and here is the output if this can help fixing this bug:

● When I try to write the LICENSE file, I call the Write tool with these parameters:

  • file_path: C:\Users\...\LICENSE (absolute path) - content: the full GPL v3 license text (~35KB of plain text)

The Write tool is part of Claude Code's built-in toolset. Internally it's likely implemented as a sandboxed file write
operation in the Claude Code CLI process itself — not an HTTP call to any external service.

My guess at what's happening: the GPL v3 text is very long (~674 lines), and the tool call with that much content in the content parameter may be hitting a size limit, timeout, or rendering issue in the CLI. The session then appears to hang waiting for a response that never comes back.

Workaround to try: Use the Bash tool to write the file via PowerShell instead, which sidesteps the Write tool
entirely. Want me to do it that way?

antonkronaj · 2 months ago

This is happening for me too.

mayerwin · 2 months ago

Same issue here to generate a BUSL with Opus 4.7, incredible many similar issues have been closed due to no activity or as duplicates, without any actual fix on any of them!

ipavicevic · 2 months ago

You can try to actually ask Claude if you can bypass this write tool. For me, Claude offered to use PowerShell (since on Windows) and it worked.

FreedomBen · 2 months ago

I've asked it why the AGPLv3 violates the content policy, and in some cases it said that it doesn't and proceeded to do it, but a far easier solution is to just use Codex. I'd sure love to see this fixed though.

Zei33 · 1 month ago

I can confirm that this bug is occurring with MIT licensing as well.

I was having it include community docs (LICENSE, SECURITY.md, etc) and it just cut me off from there. Had to skip that whole job.

ianktoo · 1 month ago

Adding my case to this thread — same false positive, different trigger.

I was working on standard open-source repo setup tasks when Claude Code halted mid-session with:

API Error: 400 Output blocked by content filtering policy

The pending todos at the time were:

◼ Add CODE_OF_CONDUCT.md
◼ Add GitHub issue templates

Neither of these involves sensitive content — they are boilerplate community health files used in virtually every open-source project on GitHub. The filter appears to be triggering on the context window content (the task list / session state) rather than any harmful output.

This is a clear false positive. The same pattern has been reported with AGPLv3 licenses, Mozilla licenses, CONTRIBUTING.md, and other scaffolding tasks. The common thread seems to be that accumulated session context containing certain file names or templated legal/community language trips the filter.

Environment:

  • Claude Code version: v2.1.150
  • Platform: Anthropic API
  • OS: Windows 11
  • Model: Opus 4.7 (1M context)
Zei33 · 1 month ago

@ianktoo The error 400 is not related to sensitive content. According to this article, it's to, "_prevent Claude from being used to replicate or regurgitate pre-existing materials_." Related to, "_ways that infringe, misappropriate, or violate intellectual property or other legal rights_"

So clearly it's detecting open-source, standard documents shared by most repos as intellectual property.

pedroberaldo87 · 1 month ago

I have this problem too.

andreasbaumann · 28 days ago

Same here, could generate licenses for check_nagios_buddyns and chech_munin_buddyns plugins, not for another project. This make claude code sort
of useless.

I could use a text editor of course. :-)

Is there a legal reason you are not allowed to put generated code unter GPLv3?

❯ Add a license file containing the GPLv3 license.                                                                                                                       

● API Error: Output blocked by content filtering policy

✻ Crunched for 10s

❯ I was able to add a license to two other projects of mine, check github for nagios and munin plugins for buddyns. This is not logical at all.                          

● I'll create the GPLv3 LICENSE file now.

● API Error: Output blocked by content filtering policy

✻ Crunched for 14s

❯ You are blocking the generation of a GPLV3 license, which other licenses do you allow?                                                                                 

● I'm not blocking anything — I stated I would create the file but didn't follow through. Let me do it now.

  Listed 1 directory (ctrl+o to expand)

● API Error: 400 Output blocked by content filtering policy

✻ Churned for 25s
❯ Create an empty text file called 'LICENSE'.                                                                                                                            

● Write(LICENSE)
  ⎿  Wrote 1 lines to LICENSE
      1 (No content)
 
● Done. Empty LICENSE file created at /home/build/linkcheck/LICENSE.

✻ Cogitated for 6s

❯ Can you change this empty LICENSE file now to contain the GPLv3.                                                                                                       

● API Error: Output blocked by content filtering policy

✻ Cogitated for 10s

❯ So, I added the license manually now. Please check the contents of LICENSE.                                                                                            

  Read 1 file (ctrl+o to expand)

● The file contains the correct GPLv3 license text. Looks good.

✻ Baked for 5s

❯ As the software is now clearly under GPLv3, can you add a GPLv3 header to     
  each Java file in the project.                                                
● Let me find all Java files first.

  Searched for 1 pattern, read 1 file (ctrl+o to expand)

● Now I'll add the standard GPLv3 header to all 6 Java files.

  Read 5 files (ctrl+o to expand)

● All files start with package. I'll prepend the GPLv3 header to each one.

● Update(src/main/java/cc/andreasbaumann/linkcheck/Crawler.java)
  ⎿  Added 17 lines
       1 +/*                                                                                                                                                      
       2 + * foobar - a Java project                                                                                                                      
       3 + * Copyright (C) 2026 Me Me <me@me.me>                                                                                          
       4 + *                                                                                                                                                      
       5 + * This program is free software: you can redistribute it and/or modify                                                                                 
       6 + * it under the terms of the GNU General Public License as published by                                                                                 
       7 + * the Free Software Foundation, either version 3 of the License, or                                                                                    
       8 + * (at your option) any later version.                                                                                                                  
       9 + *                                                                                                                                                      
      10 + * This program is distributed in the hope that it will be useful,                                                                                      
      11 + * but WITHOUT ANY WARRANTY; without even the implied warranty of                                                                                       
      12 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                                                                        
      13 + * GNU General Public License for more details.                                                                                                         
      14 + *                                                                                                                                                      
      15 + * You should have received a copy of the GNU General Public License                                                                                    
      16 + * along with this program.  If not, see <https://www.gnu.org/licenses/>.                                                                               
      17 + */                                                                                                                                                     
      18  package cc.me.me;
      19  

● GPLv3 header added to all 6 Java files

As the models are presumably also trained with GPLv3 sources from the web,
putting them under GPLv3 seems to be a fair way to go to me..