oss-fuzz

A guide for testing Apache Tika file parsers with OSS-Fuzz, a service that searches software for crashes and other unexpected failures using generated inputs.

In plain words
What is it for?
Use it to fuzz parser families, run a test corpus, reproduce a failure, build the required image and fuzzers, or add new seed files.
Why use it?
It provides a repeatable way to build fuzzers, test local source code, reproduce crashes, and run saved test files as regressions.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/apache/tika/oss-fuzz
Any agent
npx skills add apache/tika --skill oss-fuzz
Clone the repo
git clone --depth 1 https://github.com/apache/tika

Made for: Claude Code, Codex.

Per session 90 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 5,047 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00090 $0.05047
Opus 5 $0.00045 $0.02524
Sonnet 5 $0.00018 $0.01009
Haiku 4.5 $0.00009 $0.00505

Measured 2d ago against content hash 188ff5536da1, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

oss-fuzz scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.skills/devs/oss-fuzz/SKILL.md · 362 lines

How it starts

The opening of the file, as written. The whole thing — 362 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Local override: $TIKA_SKILLS_LOCAL/oss-fuzz/LOCAL.md (default ~/.tika-skills), read after this file, wins on conflict.

Tika OSS-Fuzz — local fuzzing

Tika is already in OSS-Fuzz as the apache-tika project (not tika). It is Jazzer-based (coverage-guided, in-process JVM fuzzing), not the old tika-fuzzing seed-mutation module (removed in TIKA-4506). The fuzz targets and seed logic live in the oss-fuzz repo under projects/apache-tika/, not in this repo:

  • project-parent/fuzz-targets/src/main/java/com/example/*Fuzzer.java — one Jazzer target per parser family. Each calls ParserFuzzer.parseOne(...) (parse-from-bytes and parse-from-file) and swallows TikaException | SAXException | IOException; anything else — Error (OOM, StackOverflow), a hang, or an unexpected RuntimeException — is a finding.
  • build.sh — builds tika-app, then the fuzz-targets module.
  • build_seeds.sh — packs Tika's own unit-test files into <Target>_seed_corpus.zip by file extension.

Targets (as of this writing): AudioVideoParsersFuzzer, AutoDetectParserFuzzer, CompressorParserFuzzer, HtmlParserFuzzer, ImageParsersFuzzer, JackcessParserFuzzer, OOXMLParserFuzzer, OfficeParserFuzzer, OneNoteParserFuzzer, PDFParserFuzzer, PackageParserFuzzer, RFC822ParserFuzzer, RTFParserFuzzer, TextAndCSVParserFuzzer, XMLReaderUtilsFuzzer. ParserFuzzer is the shared helper, not a target (build.sh skips it). This list drifts — get the current one after a build with ls build/out/apache-tika/*Fuzzer, or from source with find $OSSFUZZ/projects/apache-tika/project-parent/fuzz-targets -name '*Fuzzer.java'.

Primary contact on the project is [email protected], so OSS-Fuzz crash mail / ClusterFuzz notifications land in that inbox — check there for what continuous fuzzing has already found before treating a bug as newly discovered.

Read the full file on GitHub · 362 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 362 lines · 90 tokens per session scan A 188ff5536da1

Subscribe to this mod's changes

oss-fuzz is a skill published in the GitHub repository apache/tika (4,028 stars, last pushed today), licensed Apache-2.0. It adds 90 tokens to every session and 5,047 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

connector-review

Review an OpenMetadata connector against golden standards. Runs multi-agent analysis covering architecture, code quality, type safety, testing, and performance. When a PR number is given, automatically posts the quality summary to the PR description and a detailed review as a PR comment.

open-metadata/OpenMetadata · 55 tokens

connector-audit

Deep reliability audit for OpenMetadata connectors — runs 7 investigation prompts (metadata, errors, auth, lineage, scale, synthesis, implementation) against connector standards.

open-metadata/OpenMetadata · 35 tokens

playwright-validation

Use when validating UI changes in a branch require Playwright E2E testing. Reviews branch changes, validates UI with Playwright MCP, and adds missing test cases.

open-metadata/OpenMetadata · 37 tokens

pr-checklist

Use when opening or finalizing a GitHub PR for OpenMetadata. Walks through the repo PR template — linked issue, high-level design (for big PRs), unit/integration/Playwright tests + coverage, UI screen recording, and manual test steps — then drafts a fully-filled PR body and (optionally) creates the PR.

open-metadata/OpenMetadata · 73 tokens

test-locally

Build and deploy a full local OpenMetadata stack with Docker to test your connector in the UI. Handles code generation, build optimization, health checks, and guided testing.

open-metadata/OpenMetadata · 38 tokens

ui-checkstyle

Run the exact ESLint + Prettier + organize-imports sequence that CI's UI Checkstyle workflow runs — on just the files the PR changed — and fail the task if any file ends up with a diff. Invoke after authoring or modifying any .ts, .tsx, .js, .jsx, or .json file under openmetadata-ui/src/main/resources/ui/src/…

open-metadata/OpenMetadata · 122 tokens