Overview
We are still working on improving tools, so there might be unexpected behavior or changes in the future.
FileReadTool reads the contents of a file from the local file system and returns it as text.
It is useful for batch text file processing, reading runtime configuration files, and importing data for analytics.
It supports any text-based file format, such as .txt, .csv, .json, and .md.
Content is always returned as plain text — parsing it (for example, json.loads on a .json file) is up to the agent or your own code.
For large files, start_line and line_count read just a window of lines instead of loading the whole file.
Installation
To utilize the functionalities previously attributed to the FileReadTool, install the crewai_tools package:Usage Example
To get started with the FileReadTool:Code
Arguments
The agent supplies these at runtime:file_path: (Optional) The path to the file you want to read. Accepts absolute and relative paths. Ensure the file exists and you have the necessary permissions to access it. Omit it to read the default file configured at construction; if there is no default, the tool reports that no path was provided.start_line: (Optional) The line number to start reading from (1-indexed). Defaults to1.line_count: (Optional) The number of lines to read. If omitted, reads fromstart_lineto the end of the file.
file_path: (Optional) A default file to read when the agent calls the tool with no arguments.base_dir: (Optional) The directory that runtime paths must stay inside. Defaults to the current working directory.encoding: (Optional) Text encoding used to decode the file. Defaults toutf-8.
Allowed paths
Because the file path is usually chosen by an LLM at runtime, reads are confined to a sandbox:- Paths supplied at runtime must resolve inside
base_dir, which defaults to the current working directory...segments and symlinks are resolved before the check, so they cannot be used to escape. - A
file_pathpassed to the constructor is developer-declared intent, so it is always allowed past the containment check — even outsidebase_dir. The read itself can still fail if the file is missing, is a directory, or is not permitted. It is pinned when the tool is built, so a later change of working directory cannot repoint it, and the agent can address it either by omittingfile_pathor by using the name shown in the tool’s description. Declaring one file does not expose its siblings.
base_dir at it:
Code
CREWAI_TOOLS_ALLOW_UNSAFE_PATHS=true disables path validation. This applies process-wide to every crewai-tools tool, including the SSRF protections on URL-fetching tools, so prefer base_dir.