# What is the \`safe\` parameter for Dry::Struct.new?

**URL:** <https://discourse.dry-rb.org/t/what-is-the-safe-parameter-for-dry-struct-new/1160>\
**Category:** Support\
**Created:** [November 10, 2020, 5:26pm UTC](https://discourse.dry-rb.org/t/what-is-the-safe-parameter-for-dry-struct-new/1160 "2020-11-10T17:26:43Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![FooBarWidget](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.dry-rb.org/foobarwidget/32/573_2.png) [@FooBarWidget](https://discourse.dry-rb.org/u/FooBarWidget)\
**Post date:** [November 10, 2020, 5:26pm UTC](https://discourse.dry-rb.org/t/what-is-the-safe-parameter-for-dry-struct-new/1160/1 "2020-11-10T17:26:43Z")

</div>

According to the API docs, Dry::Struct.new has a `safe` parameter, but it’s not documented. What does this parameter do? Does it have anything to do with security, e.g. whether the method becomes safe to use against untrusted input?

---

<div class="post-metadata">

**Author:** ![flash-gordon](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.dry-rb.org/flash-gordon/32/494_2.png) [@flash-gordon](https://discourse.dry-rb.org/u/flash-gordon)\
**Post date:** [November 12, 2020, 1:25pm UTC](https://discourse.dry-rb.org/t/what-is-the-safe-parameter-for-dry-struct-new/1160/2 "2020-11-12T13:25:49Z")

</div>

It is an internal argument used for separating call paths, making code faster in some cases. It has nothing to do with security and it’s not part of the public API. We could theoretically do it in some other way but that would be a breaking change since people may override `new` in their struct classes. In other words, because reasons 🙂
